G_c*_*_cy 5 hive apache-spark apache-spark-sql spark-avro
我正在使用spark 1.6,我的目标是像在蜂巢脚本中一样创建外部蜂巢表。为此,我首先读取分区的avro文件并获取该文件的架构。现在我在这里停止了,我不知道如何将该模式应用于创建表。我使用scala。需要帮助的人。
最后,我用老式的方式自己做。借助以下代码:
val rawSchema = sqlContext.read.avro("Path").schema
val schemaString = rawSchema.fields.map(field => field.name.replaceAll("""^_""", "").concat(" ").concat(field.dataType.typeName match {
case "integer" => "int"
case smt => smt
})).mkString(",\n")
val ddl =
s"""
|Create external table $tablename ($schemaString) \n
|partitioned by (y int, m int, d int, hh int, mm int) \n
|Stored As Avro \n
|-- inputformat 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' \n
| -- outputformat 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' \n
| Location 'hdfs://$path'
""".stripMargin
Run Code Online (Sandbox Code Playgroud)
注意列名不能以开头,_蜂巢不能解析integer。我想说这种方式不是灵活的,而是可行的。如果有人有更好的主意,请评论。
| 归档时间: |
|
| 查看次数: |
14849 次 |
| 最近记录: |