Практическое правило для чтения из файла и определения схемы для сложной структуры данных - PullRequest
0 голосов
/ 31 марта 2020

Я запутался в чтении сложного файла (т. Е. Кортежа и мешка) в Pig и определении схем,

, чтобы быть более точным, как я буду переводить {, (и разделитель (например, |) во время чтения файл.

Например, я не могу выяснить содержимое 'complex_7.txt' со следующей строкой в ​​Pig:

(я делаю обратный Eng, у меня есть этот пример, и я пытаюсь написать текстовый файл, в котором можно использовать эту схему)

a = LOAD '/user/maria_dev/complex_7.txt'  AS (f1:int,f2:int,B:bag{T:tuple(t1:int,t2:int)});

dump a; This command should produce the following output from complex_7.txt, so how shall this data must be stored in this file (i.e. complex_7.txt)?? This is my question.
10,1,{(2,3),(4,6)}
11,2,{(2,3),(4,6),(8,9)}
12,3,{(1,3)}

сказав, что, как я могу определить несколько PigStorage во время чтения файла, который содержит сложную схему,

Например, если у меня есть следующий текстовый файл (скажем complex_8.txt), как я могу его прочитать?

 1|2|{(2,3),(5,6)}, # I am not sure how the actual file must look like, but I may have a case that I may need to use multiple PigStorage separator.

Я предполагаю, что для чтения вышеуказанных данных нам понадобятся два разделителя, один для '| ', и один для', '(в кортеже).


ОБНОВЛЕНИЕ :

Этот ответ помог мне решить эту часть (то есть иметь несколько разделителей) ):

apache данные о загрузке свиньи с несколькими разделителями *


Таким образом, схема этого файла должна иметь следующий формат:

a = LOAD '/user/maria_dev/complex_7.txt' AS (f1: int, f2: int, B: bag {T: tuple (t1: int, t2: int)});

Поэтому я думаю, что я на самом деле пытаюсь сказать, как я могу перевести {,) и разделитель из файла в схему а из схемы в файл?

...