1
下面的代码是它如何使用scala写入HDFS。什么是HQL语法来创建一个Hive表来查询这些数据?我如何从使用数据块写入的AVRO文件创建Hive外部表?
import com.databricks.spark.avro._
val path = "/user/myself/avrodata"
dataFrame.write.avro(path)
例子中找到需要提供avro.schema.literal描述架构或avro.schema.url实际Avro的模式。
在火花外壳所有我需要做的阅读是这样的:
scala> import com.databricks.spark.avro._
scala> val df = sqlContext.read.avro("/user/myself/avrodata")
scala> df.show()
来自Spark-Avro源代码的评论指出*“模式进化尚未得到支持,在这里我们只选择一个随机样本文件来**找出整个数据集的模式** * (https://github.com/databricks/spark-avro/blob/master/src/main/scala/com/databricks/spark/avro/DefaultSource.scala)。 –
Hive不能以这种方式工作,它需要**在CREATE时显式**当前的AVRO模式。但是文档(https://cwiki.apache.org/confluence/display/Hive/AvroSerDe)指出有两种方式可以做到这一点:或者链接到AVRO模式(可在本地文件/ URL中使用),或者简单地列出列,就好像它是一个Text文件一样,并让Hive从该SQL模式推断出AVRO模式。 –