Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
Apache spark Spark DataFrame saveAsTable with partitionBy在HDFS中不创建ORC文件_Apache Spark_Apache Spark Sql - Fatal编程技术网

Apache spark Spark DataFrame saveAsTable with partitionBy在HDFS中不创建ORC文件

Apache spark Spark DataFrame saveAsTable with partitionBy在HDFS中不创建ORC文件,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我有一个Spark数据框,我想用分区保存为配置单元表。我尝试了以下两个语句,但都不起作用。我在HDFS目录中没有看到任何ORC文件,因为它是空的。我可以在配置单元控制台中看到baseTable,但很明显它是空的,因为HDFS中没有文件 以下两行saveAsTable()和insertInto()不起作用。registerDataFrameAsTable()方法可以工作,但它会在内存中创建表,并在我的用例中导致OOM,因为我有数千个配置单元分区要共享。我是新手 dataFrame.write().

我有一个Spark数据框,我想用分区保存为配置单元表。我尝试了以下两个语句,但都不起作用。我在HDFS目录中没有看到任何ORC文件,因为它是空的。我可以在配置单元控制台中看到baseTable,但很明显它是空的,因为HDFS中没有文件

以下两行
saveAsTable()
insertInto()
不起作用。registerDataFrameAsTable()方法可以工作,但它会在内存中创建表,并在我的用例中导致OOM,因为我有数千个配置单元分区要共享。我是新手

dataFrame.write().mode(SaveMode.Append).partitionBy("entity","date").format("orc").saveAsTable("baseTable"); 

dataFrame.write().mode(SaveMode.Append).format("orc").partitionBy("entity","date").insertInto("baseTable");

//the following works but creates in memory table and seems to be reason for OOM in my case
    
hiveContext.registerDataFrameAsTable(dataFrame, "baseTable");

希望您已经得到了答案,但将此答案发布给其他人参考,partitionBy在Spark 1.4之前仅支持拼花地板,在1.5+版本中添加了对ORC、JSON、text和avro的支持,请参阅下面的文档


使用此
dataFrame.write().mode(SaveMode.Append).partitionBy(“实体”、“日期”).format(“orc”).save(“基表”)
并尝试将完整路径放入
save()
,而不是相对路径。