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看savastable_Apache Spark_Hive_Pyspark - Fatal编程技术网

Apache spark 从Spark看savastable

Apache spark 从Spark看savastable,apache-spark,hive,pyspark,Apache Spark,Hive,Pyspark,我们正在尝试从SPARK写入配置单元表,并使用saveAsTable函数。我想知道是否每次删除并重新创建配置单元表时都保存一个表?如果它这样做了,那么是否有其他可能的spark函数实际上只是截断并加载一个表,而不是删除并重新创建。这取决于您指定的.mode值 覆盖-->然后spark首先删除表,然后重新创建表 >>> df.registerTempTable("temp") --registering df as temptable >>>

我们正在尝试从SPARK写入配置单元表,并使用saveAsTable函数。我想知道是否每次删除并重新创建配置单元表时都保存一个表?如果它这样做了,那么是否有其他可能的spark函数实际上只是截断并加载一个表,而不是删除并重新创建。

这取决于您指定的.mode值

覆盖-->然后spark首先删除表,然后重新创建表

>>> df.registerTempTable("temp") --registering df as temptable
>>> spark.sql("insert overwrite table default.spark1 select * from temp") --overwriting the target table.
追加-->向表中插入新数据

>>> df.registerTempTable("temp") --registering df as temptable
>>> spark.sql("insert overwrite table default.spark1 select * from temp") --overwriting the target table.
1.如果存在则删除/如果不存在则创建默认值。拼花地板格式的spark1表格

>>> df.write.mode("overwrite").saveAsTable("default.spark1")
2.存在时删除/不存在时创建orc格式的default.spark1表

>>> df.write.format("orc").mode("overwrite").saveAsTable("default.spark1")
3.将新数据附加到表中的现有数据(不删除/重新创建表)

使用Spark实现截断和加载:

方法1:-

您可以将数据帧注册为临时表,然后执行insert overwrite语句覆盖目标表

>>> df.registerTempTable("temp") --registering df as temptable
>>> spark.sql("insert overwrite table default.spark1 select * from temp") --overwriting the target table.
此方法也适用于内部/外部表

方法2:-

对于内部表,我们可以先截断表,然后将数据追加到表中,通过使用这种方式,我们不是重新创建表,而是将数据追加到表中

>>> spark.sql("truncate table default.spark1")
>>> df.write.format("orc").mode("append").saveAsTable("default.spark1")
此方法仅适用于内部表

即使是在外部表的情况下,我们也可以通过更改表属性来进行一些变通,以截断表

让我们假设default.spark1表是外部表

--change external table to internal table
>>> saprk.sql("alter table default.spark1 set tblproperties('EXTERNAL'='FALSE')")
--once the table is internal then we can run truncate table statement
>>> spark.sql("truncate table default.spark1")
--change back the table as External table again
>>> spark.sql("alter table default.spark1 set tblproperties('EXTERNAL'='TRUE')")
--then append data to the table
>>> df.write.format("orc").mode("append").saveAsTable("default.spark1")

这取决于您指定的.mode值

覆盖-->然后spark首先删除表,然后重新创建表

>>> df.registerTempTable("temp") --registering df as temptable
>>> spark.sql("insert overwrite table default.spark1 select * from temp") --overwriting the target table.
追加-->向表中插入新数据

>>> df.registerTempTable("temp") --registering df as temptable
>>> spark.sql("insert overwrite table default.spark1 select * from temp") --overwriting the target table.
1.如果存在则删除/如果不存在则创建默认值。拼花地板格式的spark1表格

>>> df.write.mode("overwrite").saveAsTable("default.spark1")
2.存在时删除/不存在时创建orc格式的default.spark1表

>>> df.write.format("orc").mode("overwrite").saveAsTable("default.spark1")
3.将新数据附加到表中的现有数据(不删除/重新创建表)

使用Spark实现截断和加载:

方法1:-

您可以将数据帧注册为临时表,然后执行insert overwrite语句覆盖目标表

>>> df.registerTempTable("temp") --registering df as temptable
>>> spark.sql("insert overwrite table default.spark1 select * from temp") --overwriting the target table.
此方法也适用于内部/外部表

方法2:-

对于内部表,我们可以先截断表,然后将数据追加到表中,通过使用这种方式,我们不是重新创建表,而是将数据追加到表中

>>> spark.sql("truncate table default.spark1")
>>> df.write.format("orc").mode("append").saveAsTable("default.spark1")
此方法仅适用于内部表

即使是在外部表的情况下,我们也可以通过更改表属性来进行一些变通,以截断表

让我们假设default.spark1表是外部表

--change external table to internal table
>>> saprk.sql("alter table default.spark1 set tblproperties('EXTERNAL'='FALSE')")
--once the table is internal then we can run truncate table statement
>>> spark.sql("truncate table default.spark1")
--change back the table as External table again
>>> spark.sql("alter table default.spark1 set tblproperties('EXTERNAL'='TRUE')")
--then append data to the table
>>> df.write.format("orc").mode("append").saveAsTable("default.spark1")
您还可以使用不重新创建表的

saveAsTable之间的主要区别在于insertInto希望表已经存在,并且基于列的顺序而不是名称。

您也可以使用不重新创建表的

saveAsTable之间的主要区别在于insertInto希望表已经存在,并且基于列的顺序而不是名称