0
如何在同一目錄中加載具有.pig_schema
模式文件的數據文件?Pig:使用.pig_schema模式文件加載數據
official Apache Pig documentation和this answer缺少對不同模式字段的含義或不同數據類型值的任何適當解釋。
有人能給出一個更好,更詳細的例子嗎?
如何在同一目錄中加載具有.pig_schema
模式文件的數據文件?Pig:使用.pig_schema模式文件加載數據
official Apache Pig documentation和this answer缺少對不同模式字段的含義或不同數據類型值的任何適當解釋。
有人能給出一個更好,更詳細的例子嗎?
當你在豬加載數據,您可以根據需要定義,在您的數據目錄位於一個.pig_schema
JSON文件的架構:
data/
├── data_file.csv
└── .pig_schema
如果您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"
值:
int : 10
long : 15
float : 20
double : 25
bytearray : 50
chararray : 55
map : 100
tuple : 110
bag : 120
不知道它是需要的,但我總能看到這樣的語法與模式存儲時或裝載載荷:'PigStorage(「」 ' - 模式')' –