Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么要通过spark将csv文件推送到HIVE投掷索引器?_Python_Hive_Pyspark_Apache Spark 2.0 - Fatal编程技术网

Python 为什么要通过spark将csv文件推送到HIVE投掷索引器?

Python 为什么要通过spark将csv文件推送到HIVE投掷索引器?,python,hive,pyspark,apache-spark-2.0,Python,Hive,Pyspark,Apache Spark 2.0,我正在使用Spark 2.1将csv文件推送到它创建的配置单元表中。但我得到的错误如下 df = sqlcontext.read.load( "/home/{}/{}/{}/*.csv".format(path, files), format='com.databricks.spark.csv', header='true', inferSchema='true' ) IndexError: tuple index out of range 相应代码如下所示:

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

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))
注:我的观察结果如下:-

sqlcontext.read.load中的1具有三个元组,用于文件的完整路径。 2最初我只使用了2个元组,但在这种情况下,我得到的错误如下:

pyspark.sql.utils.AnalysisException: u'Path does not exist: hdfs://dev-batch-bi/home/home/<path_to>/file1.csv/*.csv;'
因此,从上面的错误来看,很明显/home不应该是/ 分离元组。此外,实际csv文件的名称位于/*.csv之前,这也是错误的。因此,不需要调整任何元组来完成任务。我已经尝试添加第三个元组,我在我的帖子前面已经提到过。但这是没有用的


请帮助。

您没有为格式传递足够的参数/home/{}/{}/{}/*.csv.formatpath,filesHadoop允许使用通配符,因此您应该能够通过传递/path/to/files或/path/to/files/*.csv来解决问题。如何使用格式或其他由您决定的方式构造路径字符串。您可能希望构造为单独的var,并在传递给pyspark之前将其打印出来,这样您就知道它是否正确。