Python 如何从avro模式(.avsc)创建表?

Python 如何从avro模式(.avsc)创建表?,python,pyspark,avro,databricks,Python,Pyspark,Avro,Databricks,我有一个avro模式文件,需要通过pyspark在Databricks中创建一个表。我不需要加载数据,只想创建表。简单的方法是加载JSON字符串,并从字段数组中获取“name”和“type”。然后生成CREATESQL查询。我想知道是否有任何编程方法可以通过任何API实现这一点。示例模式- { "type" : "record", "name" : "kylosample", "doc" : "Schema generated by Kite", "fields" : [ {

我有一个avro模式文件,需要通过pyspark在Databricks中创建一个表。我不需要加载数据,只想创建表。简单的方法是加载JSON字符串,并从
字段
数组中获取
“name”
“type”
。然后生成
CREATE
SQL查询。我想知道是否有任何编程方法可以通过任何API实现这一点。示例模式-

{
  "type" : "record",
  "name" : "kylosample",
  "doc" : "Schema generated by Kite",
  "fields" : [ {
    "name" : "registration_dttm",
    "type" : "string",
    "doc" : "Type inferred from '2016-02-03T07:55:29Z'"
  }, {
    "name" : "id",
    "type" : "long",
    "doc" : "Type inferred from '1'"
  }, {
    "name" : "first_name",
    "type" : "string",
    "doc" : "Type inferred from 'Amanda'"
  }, {
    "name" : "last_name",
    "type" : "string",
    "doc" : "Type inferred from 'Jordan'"
  }, {
    "name" : "email",
    "type" : "string",
    "doc" : "Type inferred from 'ajordan0@com.com'"
  }, {
    "name" : "gender",
    "type" : "string",
    "doc" : "Type inferred from 'Female'"
  }, {
    "name" : "ip_address",
    "type" : "string",
    "doc" : "Type inferred from '1.197.201.2'"
  }, {
    "name" : "cc",
    "type" : [ "null", "long" ],
    "doc" : "Type inferred from '6759521864920116'",
    "default" : null
  }, {
    "name" : "country",
    "type" : "string",
    "doc" : "Type inferred from 'Indonesia'"
  }, {
    "name" : "birthdate",
    "type" : "string",
    "doc" : "Type inferred from '3/8/1971'"
  }, {
    "name" : "salary",
    "type" : [ "null", "double" ],
    "doc" : "Type inferred from '49756.53'",
    "default" : null
  }, {
    "name" : "title",
    "type" : "string",
    "doc" : "Type inferred from 'Internal Auditor'"
  }, {
    "name" : "comments",
    "type" : "string",
    "doc" : "Type inferred from '1E+02'"
  } ]
}

这似乎还没有通过Python API提供。。。这就是我过去通过Spark SQL创建外部表的方式,它指向导出的.avsc,因为您只想创建一个表,而不想加载任何数据。。。例如:

spark.sql(“”)
创建外部表db.table_name
存储为AVRO
位置“路径/位置/数据/将/将/存储”
TBLProperty('avro.schema.url'='PATH/TO/schema.avsc')
""")
Spark 2.4中的本机Scala API现在似乎有了.avsc阅读器。。。由于您使用的是Databrick,因此可以在笔记本中更改内核,如
%scala或%python或%sql
。。。Scala示例:

import org.apache.avro.Schema
val schema=new schema.Parser().parse(新文件(“user.avsc”))
火花
阅读
.格式(“avro”)
.option(“avroSchema”,schema.toString)
.load(“/tmp/scents.avro”)
.show()
Spark 2.4 Avro集成的参考文档=>


这似乎还不能通过Python API获得。。。这就是我过去通过Spark SQL创建外部表的方式,它指向导出的.avsc,因为您只想创建一个表,而不想加载任何数据。。。例如:

spark.sql(“”)
创建外部表db.table_name
存储为AVRO
位置“路径/位置/数据/将/将/存储”
TBLProperty('avro.schema.url'='PATH/TO/schema.avsc')
""")
Spark 2.4中的本机Scala API现在似乎有了.avsc阅读器。。。由于您使用的是Databrick,因此可以在笔记本中更改内核,如
%scala或%python或%sql
。。。Scala示例:

import org.apache.avro.Schema
val schema=new schema.Parser().parse(新文件(“user.avsc”))
火花
阅读
.格式(“avro”)
.option(“avroSchema”,schema.toString)
.load(“/tmp/scents.avro”)
.show()
Spark 2.4 Avro集成的参考文档=>


获取错误
无法推断架构。创建表需要架构规范
是否从avro文件生成avro架构?例如:=>
avro工具getschema part-m-00000.avro>orders.avsc
获取错误
无法推断模式。创建表需要架构规范
是否从avro文件生成avro架构?例如:=>
avro工具getschema部分-m-00000.avro>orders.avsc