2016-10-01 50 views

回答

1

當你在豬加載數據,您可以根據需要定義,在您的數據目錄位於一個.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 
+0

不知道它是需要的,但我總能看到這樣的語法與模式存儲時或裝載載荷:'PigStorage(「」 ' - 模式')' –