将几个变量从 scala / spark-shell 馈送到 hive 表
Posted
技术标签:
【中文标题】将几个变量从 scala / spark-shell 馈送到 hive 表【英文标题】:feeding several variables from scala / spark-shell to hive table 【发布时间】:2016-02-19 12:07:38 【问题描述】:我在 scala / spark-shell 中有 4 个变量。
S1 = (a string) = "age"
S2 = (another string) = "school"
D1 = (a double) = 0.50
D2 = (another double) = 0.75
我需要像这样把它喂给蜂巢表:
系数系数
年龄 0.50
学校 0.75
我能够从 scala/spark-shell 创建表:
val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
//后续作品
hiveContext.sql("create table students_table (factor STRING, coeff FLOAT) stored as orc")
但是,我不知道如何将这些值插入到 hive 表中。
我玩过插入和更新语句。 我也玩过数据框。 我也尝试将数据转储到 hdfs 中的文本文件中(首先将它们转换为 RDD),但格式出来的方式使我无法将其用作 hive 表的素材。
我确信我错过了如何做到这一点的整个想法。
真诚感谢任何帮助。
【问题讨论】:
【参考方案1】:val input = sc.parallelize(Array((s1,D1), (s2, D2)))
case class StudentTable(factor : String, coeff : Double)
import sqlContext.implicits._
val df = input.map(x=>StudentTable(x._1, x._2)).toDF
df.saveAsTable("students_table", org.apache.spark.sql.SaveMode.Append)
【讨论】:
输入:org.apache.spark.rdd.RDD[Any] = ParallelCollectionRDD[257] 在(factor STRING, coeff FLOAT)
的数据类型更改为 (factor STRING, coeff Double)
以上是关于将几个变量从 scala / spark-shell 馈送到 hive 表的主要内容,如果未能解决你的问题,请参考以下文章
从Spark-Shell到SparkContext的函数调用路径过程分析(源码)
如何将命令行参数传递给 spark-shell scala 脚本?
在索引 spark-shell/scala 处更改 Array[StructField] 中的数据类型