У меня есть 6
CSV
файлы в HDFS
. 3
присутствуют в каталоге с именами /user/data/
и 3
в /user/docs/
.
/user/data/
имеет tab_team, tab_players, tab_country
CSV-файлов.
/user/docs/
имеет tab_team, tab_players, tab_country
CSV-файлов.
Несмотря на то, что имена одинаковые, эти файлы содержат разные данные.
Теперь, используя эти CSV-файлы, я хочу создать таблицы в Hive, используя pyspark
Я сделал, как показано ниже.
file_list = ['tab_team', 'tab_players', 'tab_country']
for team in file_list:
df = sqlContext.read.load("/user/data/{}/*.csv".format(team), format='com.databricks.spark.csv', header='true', inferSchema='true')
df.registerTempTable("my_temp_table")
sqlContext.sql("create table {}.`data_{}` stored as ORC as select * from my_temp_table".format(db_name, team))
for team in file_list:
df = sqlContext.read.load("/user/docs/{}/*.csv".format(team), format='com.databricks.spark.csv', header='true', inferSchema='true')
df.registerTempTable("my_temp_table")
sqlContext.sql("create table {}.`docs_{}` stored as ORC as select * from my_temp_table".format(db_name, team))
Я получил то, что хочу. Но, как вы видите здесь, большая часть кода является дублирующим кодом. Я хотел бы уменьшить дублирование кода. Как я могу это сделать?