- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我刚刚开始使用 hadoop,我正在使用 Avro (fastavro)。
1- 我想验证架构并转换为 .avro 文件。
{
"type": "record",
"name": "Node",
"fields": [
{
"name": "nom",
"type": "string"
},
{
"name": "zone",
"type": {
"type": "map",
"values": "string"
}
},
{
"name": "price",
"type": "float"
},
{
"name": "type",
"type": "string"
}
]
}
我的测试文件(验证模式):
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import json
import fastavro
schema = json.load(open("myschema.avsc"))
records = [
{
"nom": "blabla",
"zone": ["north", "south", "east"],
"prix": 4.0,
"type": "geoloc"
}
]
fastavro.writer(open("myschema.avro", "wb"), schema, records)
我有这个错误:
Traceback (most recent call last):
File "test-schema.py", line 17, in <module>
fastavro.writer(open("myschema.avro", "wb"), schema, records)
File "/var/www/data-machine/HDFS/env/lib/python3.5/site-packages/fastavro/writer.py", line 614, in writer
output.write(record)
File "/var/www/data-machine/HDFS/env/lib/python3.5/site-packages/fastavro/writer.py", line 537, in write
write_data(self.io, record, self.schema)
File "/var/www/data-machine/HDFS/env/lib/python3.5/site-packages/fastavro/writer.py", line 432, in write_data
return fn(fo, datum, schema)
File "/var/www/data-machine/HDFS/env/lib/python3.5/site-packages/fastavro/writer.py", line 363, in write_record
name, field.get('default')), field['type'])
File "/var/www/data-machine/HDFS/env/lib/python3.5/site-packages/fastavro/writer.py", line 432, in write_data
return fn(fo, datum, schema)
File "/var/www/data-machine/HDFS/env/lib/python3.5/site-packages/fastavro/writer.py", line 232, in write_map
for key, val in iteritems(datum):
File "/var/www/data-machine/HDFS/env/lib/python3.5/site-packages/fastavro/six.py", line 27, in py3_iteritems
return obj.items()
AttributeError: 'list' object has no attribute 'items'
2- 而且,如果我添加一个数组:
{
"name": "ingredients",
"type": ["string"]
},
错误:
File "/var/www/data-machine/HDFS/env/lib/python3.5/site-packages/fastavro/writer.py", line 345, in write_union
raise ValueError(msg)
ValueError: ["north", "south", "east"] (type <class 'list'>) do not match ['string']
最后,我想让“区域”字段可选...
谢谢 :)法布里斯
最佳答案
您的 map 记录信息有误。它期待类似的东西
"zone":{"key1":"val1","key2":"val2","key3":"val3"},
这是一张 map ,不是一个集合。如果你想要像你的例子一样的东西,你需要使用数组而不是 map
关于hadoop - 测试 avro 架构 (.avsc) 并将其转换为 .avro。 AttributeError、数组和编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47155464/
我正在尝试使用 avro-tools 将 avro avdl 文件 ( http://avro.apache.org/docs/1.7.6/idl.html#example ) 转换为 avro 模式
我有一个 hive 表模式存储在一个 hdfs 文件 schema.avsc 中。我想创建一个具有相同模式的配置单元表,并希望从数据存储在 HDFS 文件系统中的另一个 hdfs 路径转储数据。 1:
我尝试通过以下步骤创建一个配置单元表: 使用 sqoop 将数据加载到 hdfs(完成) sqoop 还创建了一个 avsc 文件,我将其上传到 hdfs 在配置单元中,我想使用以下语句创建一个表:
avro 转换很常见 avdl文件(idl 文件)到 avsc文件(模式文件)。我想从 avsc 向另一个方向转换至 avdl ,因为我手动创建了一些 avsc 文件,并希望以更简单、更漂亮的 avd
如何从 avro header 创建“.avsc”文件? 第一行内容是否是该 avro 的 avsc 文件? 或者 avsc 内容应该从:{"type":"record"up to "}avro 开始
我有一个 avro 架构文件(.avsc 文件扩展名) 如何在我的 Macbook 上打开此文件?我不知道这种文件格式,因为我是第一次使用它。 谢谢! 最佳答案 avsc 文件包含与 json 模式非
我有两个架构文件 首先是position.avsc { "type":"enum", "name": "Position", "namespace": "avro.examples.baseball"
我有一个 avro 架构文件,我需要通过 pyspark 在 Databricks 中创建一个表。我不需要加载数据,只想创建表。最简单的方法是加载 JSON 字符串并从 fields 数组中获取 "n
我正在寻找一种方法来标记 avro 字段已弃用的方式,即生成的 Java 代码(该字段的 getter 和 setter)标记为 @Deprecated注解。 放置@Deprecated进入 "doc
我刚刚开始使用 hadoop,我正在使用 Avro (fastavro)。 1- 我想验证架构并转换为 .avro 文件。 { "type": "record", "name": "Node",
我正在将巨大的 xml 文件转换为 avro 格式,作为其中的一部分,我将不得不使用 XSD 模式生成 Avro 文件模式 - 使用 Python(最好)。我找不到此转换的任何有效资源。社区可以帮我解
我想将我的输入文件 (xml/json) 转换为 parquet。我已经有了一个适用于 spark 的解决方案,并创建了所需的 Parquet 文件。 但是,由于其他客户要求,我可能需要创建一个不涉及
我是一名优秀的程序员,十分优秀!