Csv Pig:使用.Pig_模式文件加载数据

Csv Pig:使用.Pig_模式文件加载数据,csv,apache-pig,schema,text-files,Csv,Apache Pig,Schema,Text Files,如何在同一目录中加载带有.pig\u架构的数据文件 并且缺少对不同模式字段的含义或不同数据类型值的正确解释 有人能给出一个更好更详细的例子吗?当您在Pig中加载数据时,您可以选择在数据目录中的.Pig\u schemaJSON文件中定义其模式: data/ ├── data_file.csv └── .pig_schema 如果您的数据\u文件.csv如下所示: 3,0,(mybytearray),{(1.7)},[wesam#2.9] 9,8,(mybytearray),{(0.6)},[e

如何在同一目录中加载带有
.pig\u架构的数据文件

并且缺少对不同模式字段的含义或不同数据类型值的正确解释


有人能给出一个更好更详细的例子吗?

当您在Pig中加载数据时,您可以选择在数据目录中的
.Pig\u schema
JSON文件中定义其模式:

data/
├── data_file.csv
└── .pig_schema
如果您的
数据\u文件.csv
如下所示:

3,0,(mybytearray),{(1.7)},[wesam#2.9]
9,8,(mybytearray),{(0.6)},[elshamy#6.5]
您可以使用这个
.pig\u模式
文件:

{
“字段”:[
{
“名称”:“myint”,
“类型”:10
},
{
“姓名”:“mylong”,
“类型”:15
},
{
“名称”:“mytupe”,
“类型”:110,
“模式”:{
“字段”:[
{
“名称”:“mybytearray”,
“类型”:50
}
]
}
},
{
“姓名”:“mybag”,
“类型”:120,
“模式”:{
“字段”:[
{
“名称”:“mytupe”,
“类型”:110,
“模式”:{
“字段”:[
{
“名称”:“myfloat”,
“类型”:20
}
]
}
}
]
}
},
{
“名称”:“mymap”,
“类型”:100,
“模式”:{
“字段”:[
{
“名称”:空,
“类型”: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对象定义,其中包含:

  • “名称”
    字段名称(例如:
    “我的字段”
  • “type”
    表示字段类型的整数(例如:
    55
    )(请参见下面的类型值)
  • “模式”
    [可选]定义复杂类型的模式(
    元组
    映射
不同清管器数据类型的
“type”
值为:

int       : 10
long      : 15
float     : 20
double    : 25
bytearray : 50
chararray : 55
map       : 100
tuple     : 110
bag       : 120

不确定是否需要它,但我在使用模式存储或加载时总是看到这种语法:
PigStorage(“,”,“-schema”)