首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Avro schema ( .avsc )在Pyspark中的实施

Avro schema ( .avsc )在Pyspark中的实施
EN

Stack Overflow用户
提问于 2021-03-23 12:46:58
回答 1查看 433关注 0票数 1

有人可以帮助我通过Pyspark读取avro schema (.avsc ),并在将数据帧写入目标存储时强制执行它吗?我所有的targetr表模式都是以.avsc文件的形式提供的,在Pyspark中保存我的数据框架时,我需要提供这个自定义模式。我知道有像databricks的spark-avro这样的库。但是所有的例子都是用Scala给出的。

EN

回答 1

Stack Overflow用户

发布于 2021-03-25 21:57:12

使用此文件/tmp/test.avsc

代码语言:javascript
复制
{
     "type": "record",
     "namespace": "com.example",
     "name": "FullName",
     "fields": [
       { "name": "first", "type": "string" },
       { "name": "last", "type": "string" }
     ]
}

像这样的数据帧:

代码语言:javascript
复制
df = spark.createDataFrame([{"first": "john", "last": "parker" }], StructType([StructField("first", StringType()), StructField("last", StringType())]))

结果是:

代码语言:javascript
复制
+-----+------+
|first|  last|
+-----+------+
| john|parker|
+-----+------+

您可以执行以下操作来强制写入架构:

代码语言:javascript
复制
jsonFormatSchema = open("/tmp/test.avsc", "r").read() 
df.write.format("avro").options(avroSchema=jsonFormatSchema).save("/tmp/avro")

与强制执行读取模式类似:

代码语言:javascript
复制
spark.read.format('avro').options(avroSchema=jsonFormatSchema).load("/tmp/avro")

这里提供了更多信息,顺便说一句,这里有足够多的python示例:https://spark.apache.org/docs/latest/sql-data-sources-avro.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66757417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档