如何加载带有 .pig_schema 同一目录中的架构文件?官方的apachepig文档和这个答案缺乏对不同模式字段的含义或不同数据类型值的正确解释。有人能举个更好更详细的例子吗?
.pig_schema
vuv7lop31#
在pig中加载数据时,可以选择在 .pig_schema 位于数据目录中的json文件:
data/ ├── data_file.csv └── .pig_schema
如果你的 data_file.csv 看起来像:
data_file.csv
3,0,(mybytearray),{(1.7)},[wesam#2.9] 9,8,(mybytearray),{(0.6)},[elshamy#6.5]
你用这个 .pig_schema 文件:
{ "fields": [ { "name": "myint", "type": 10 }, { "name": "mylong", "type": 15 }, { "name": "mytupe", "type": 110, "schema": { "fields": [ { "name": "mybytearray", "type": 50 } ] } }, { "name": "mybag", "type": 120, "schema": { "fields": [ { "name": "mytupe", "type": 110, "schema": { "fields": [ { "name": "myfloat", "type": 20 } ] } } ] } }, { "name": "mymap", "type": 100, "schema": { "fields": [ { "name": null, "type": 25 } ] } } ] }
用这个pig脚本加载你的数据。
b = LOAD '/path/to/data' USING PigStorage(',');
您的数据将具有以下架构:
b: {myint: int,mylong: long,mytupe: (mybytearray: bytearray),mybag: {mytupe: (myfloat: float)},mymap: map[double]}
在 .pig_schema json文件的值 "fields" 键是数据中所有字段的数组。每个字段都由一个json对象定义: "name" 字段名(例如: "my_field" ). "type" 表示字段类型的整数(例如: 55 )(请参见下面的类型值)。 "schema" [可选]定义复杂类型的架构( tuple , bag , map ).这个 "type" 不同清管器数据类型的值为:
"fields"
"name"
"my_field"
"type"
55
"schema"
tuple
bag
map
int : 10 long : 15 float : 20 double : 25 bytearray : 50 chararray : 55 map : 100 tuple : 110 bag : 120
1条答案
按热度按时间vuv7lop31#
在pig中加载数据时,可以选择在
.pig_schema
位于数据目录中的json文件:如果你的
data_file.csv
看起来像:你用这个
.pig_schema
文件:用这个pig脚本加载你的数据。
您的数据将具有以下架构:
在
.pig_schema
json文件的值"fields"
键是数据中所有字段的数组。每个字段都由一个json对象定义:"name"
字段名(例如:"my_field"
)."type"
表示字段类型的整数(例如:55
)(请参见下面的类型值)。"schema"
[可选]定义复杂类型的架构(tuple
,bag
,map
).这个
"type"
不同清管器数据类型的值为: