Зачем проталкивать файлы csv через искру в HIVE, бросая IndexError? - PullRequest
0 голосов
/ 27 августа 2018

Я работаю с Spark 2.1, чтобы поместить файл csv в таблицу HIVE, которую он тоже создает.Но я получаю сообщение об ошибке, как показано ниже:

df = sqlcontext.read.load(
    "/home/{}/{}/{}/*.csv".format(path, files),
    format='com.databricks.spark.csv',
    header='true',
    inferSchema='true'
)
IndexError: tuple index out of range

Соответствующий код указан ниже:

from pyspark.sql import *
from pyspark.conf import SparkConf
spark = SparkSession\
        .builder\
        .master("local")\
        .appName("CSV_to_HIVE")\
        .enableHiveSupport()\
        .getOrCreate()
sqlcontext = SQLContext(spark)

file_list = ['file1.csv', 'file2.csv', 'file3.csv', 'file4.csv']
file_path = ['<path_to_the_folder>']

for files in file_list:
    for path in file_path:
        df = sqlcontext.read.load(
            "/home/{}/{}/{}/*.csv".format(path, files),
            format='com.databricks.spark.csv',
            header='true',
            inferSchema='true'
        )
        df.registerTempTable("my_temp_table")
        db_name = 'DB_NAME'
        sqlContext.sql("create table {}.`{}_{}` stored as ORC as select * from my_temp_table".format(db_name, path, files))

ПРИМЕЧАНИЕ. Мои наблюдения приведены ниже: -

1)В sqlcontext.read.load () есть три кортежа для полного пути к файлам.2) изначально я начинал с двух кортежей, но в этом случае я получал ошибку, как показано ниже:

pyspark.sql.utils.AnalysisException: u'Path does not exist: hdfs://dev-batch-bi/home/home/<path_to>/file1.csv/*.csv;'

Так что из вышеприведенной ошибки очевидно, что «/ home» не должен быть частьюиз "/" разделенных кортежей.Кроме того, имя фактического файла CSV идет перед "/*.csv", что также неверно.Поэтому ни один из кортежей не должен быть скорректирован для выполнения задачи.Я попытался добавить третий кортеж, который я уже упоминал ранее в своем посте.Но это бесполезно.

Пожалуйста, помогите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...