Spark 将数组列写入<double> Hive 表



使用Spark 1.6,我尝试将Arrays保存到由两列组成的配置单元表myTable中,每列类型为array<double>:

val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
import sqlContext.implicits._
val x = Array(1.0,2.0,3.0,4.0)
val y = Array(-1.0,-2.0,-3.0,-4.0)
val mySeq = Seq(x,y)
val df = sc.parallelize(mySeq).toDF("x","y")
df.write.insertInto("myTable")

但后来我得到了消息:

error: value toDF is not a member of org.apache.spark.rdd.RDD[Array[Double]]
              val df = sc.parallelize(mySeq).toDF("x","y")

完成这项简单任务的正确方法是什么?

我假设您要使用的实际结构如下:x|y1.0 |-1.02.0 |-2.03.0 |-3.04.0 |-4.0

为此,你想要的代码是:

val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
import sqlContext.implicits._
val x = Array(1.0,2.0,3.0,4.0)
val y = Array(-1.0,-2.0,-3.0,-4.0)
val mySeq = x.zip(y)
val df = sc.parallelize(mySeq).toDF("x","y")
df.write.insertInto("myTable")

从本质上讲,您需要一组类似行的对象(例如:Array[row])。最好使用另一条注释中提到的case类,而不仅仅是元组。

相关内容

  • 没有找到相关文章

最新更新