为什么要通过spark将csv文件推送到hive抛出索引器?

mitkmikd  于 2021-06-26  发布在  Hive
关注(0)|答案(0)|浏览(261)

我正在使用spark 2.1将csv文件推送到它创建的配置单元表中。但我得到的错误如下

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

相应代码如下:

  1. from pyspark.sql import *
  2. from pyspark.conf import SparkConf
  3. spark = SparkSession\
  4. .builder\
  5. .master("local")\
  6. .appName("CSV_to_HIVE")\
  7. .enableHiveSupport()\
  8. .getOrCreate()
  9. sqlcontext = SQLContext(spark)
  10. file_list = ['file1.csv', 'file2.csv', 'file3.csv', 'file4.csv']
  11. file_path = ['<path_to_the_folder>']
  12. for files in file_list:
  13. for path in file_path:
  14. df = sqlcontext.read.load(
  15. "/home/{}/{}/{}/*.csv".format(path, files),
  16. format='com.databricks.spark.csv',
  17. header='true',
  18. inferSchema='true'
  19. )
  20. df.registerTempTable("my_temp_table")
  21. db_name = 'DB_NAME'
  22. sqlContext.sql("create table {}.`{}_{}` stored as ORC as select * from my_temp_table".format(db_name, path, files))

注:我的观察结果如下below:-
1) 在sqlcontext.read.load()中,文件的完整路径有三个元组。2) 起初我只使用了2个元组,但在这种情况下,我得到的错误如下:

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

所以从上面的错误来看,“/home”显然不应该是“/”分离元组的一部分。此外,实际csv文件的名称在“/*.csv”前面,这也是错误的。因此,不需要调整元组的数目来完成任务。我已经尝试添加第三个元组,我已经在我的帖子前面提到过。但这是没有用的。
请帮忙。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题