Spark支持条款吗?

Gan*_*mar 5 hadoop apache-spark

我有一个employee_1带有属性ID和名称(带有数据)的表,还有另一个employee_2具有相同属性的表,我想通过将ID值增加+1来加载数据

我的有子句如下所示:

WITH EXP AS (SELECT  ALIASNAME.ID+1 ID, ALIASNAME.NAME NAME FROM employee_1 ALIASNAME)
INSERT INTO TABLE employee_2 SELECT * FROM EXP; 
Run Code Online (Sandbox Code Playgroud)

执行步骤:

我在HDFS位置有一个文件(包含数据)。

  1. 根据hdfs位置创建RDD。
  2. RDD到Hive临时表
  3. 从临时表到Hive目标(employee_2)。

当我从后端成功运行测试程序时。但数据未加载。employee_2是空的。

注意:如果您在Hive中运行上述with子句,它将成功并加载数据。但是火花不会在1.6中吗?

Gar*_*n S 5

WITH 语句不是问题,而是导致麻烦的 INSERT INTO 语句。

这是一个使用 .insertInto() 样式而不是“INSERT INTO”SQL 的工作示例:

val s = Seq((1,"foo"), (2, "bar"))
s: Seq[(Int, String)] = List((1,foo), (2,bar))
val df = s.toDF("id", "name")
df.registerTempTable("df")
sql("CREATE TABLE edf_final (id int, name string)")
val e = sql("WITH edf AS (SELECT id+1, name FROM df cook) SELECT * FROM edf")
e.insertInto("edf_final")
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用df.write.mode("append").saveAsTable("edf_final")样式。

相关 SO:“插入...”与 SparkSQL HiveContext