如何从使用databricks编写的avro文件创建配置单元外部表?

pbgvytdp  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(405)

下面的代码是如何使用scala将其写入hdfs的。创建配置单元表以查询此数据的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()
kzmpq1sx

kzmpq1sx1#

所以我作弊是为了让它发挥作用。基本上,我创建了一个临时表,并使用hql从temp表中创建和插入数据。这个方法使用临时表中的元数据并创建我想要创建和填充的avro目标表。如果Dataframe可以从它的模式中创建一个临时表,为什么不能将表保存为avro呢?

dataFrame.registerTempTable("my_tmp_table")
sqlContext.sql(s"create table ${schema}.${tableName} stored as avro as select * from ${tmptbl}")

相关问题