【发布时间】:2016-12-26 22:49:06
【问题描述】:
下面的代码是如何使用 scala 将其写入 HDFS。创建 Hive 表来查询这些数据的 HQL 语法是什么?
import com.databricks.spark.avro._
val path = "/user/myself/avrodata"
dataFrame.write.avro(path)
我发现的示例需要提供 avro.schema.literal 来描述架构或 avro.schema.url 到实际的 avro 架构。
在 spark-shell 中,我需要做的是:
scala> import com.databricks.spark.avro._
scala> val df = sqlContext.read.avro("/user/myself/avrodata")
scala> df.show()
【问题讨论】:
-
来自 Spark-Avro 源代码的评论指出 “尚不支持模式演化。这里我们只选择一个随机样本文件来找出模式 整个数据集” (github.com/databricks/spark-avro/blob/master/src/main/scala/com/…)。
-
Hive 不能以这种方式工作,它在创建时需要明确当前的 AVRO 模式。但是文档 (cwiki.apache.org/confluence/display/Hive/AvroSerDe) 指出有两种方法可以做到这一点:要么链接到 AVRO 模式(在本地文件/URL 中可用),要么简单地列出列,就好像它是一个文本文件并让Hive 从该 SQL 模式推断 AVRO 模式。
标签: scala apache-spark hive avro databricks