лучший способ создания таблиц в кусте из CSV-файлов с использованием pyspark - PullRequest
0 голосов
/ 27 июня 2018

У меня есть 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))

Я получил то, что хочу. Но, как вы видите здесь, большая часть кода является дублирующим кодом. Я хотел бы уменьшить дублирование кода. Как я могу это сделать?

1 Ответ

0 голосов
/ 27 июня 2018

Как насчет другого цикла?

file_list = ['tab_team', 'tab_players', 'tab_country']
file_path = ['data', 'docs']

for team in file_list:
    for path in file_path:
        df = sqlContext.read.load("/user/{}/{}/*.csv".format(path, team), format='com.databricks.spark.csv', header='true', inferSchema='true')

        df.registerTempTable("my_temp_table")

        sqlContext.sql("create table {}.`{}_{}` stored as ORC as select * from my_temp_table".format(db_name, path, team))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...