У меня есть CSV-файл sample.csv, расположенный в \home\hadoop\Desktop\script\sample.csv. Я пытался загрузить в PIG, используя

movies = load '/home/hadoop/Desktop/script/sample.csv' using PigStorage(',') as (id,name,year,rating,duration);

Но этот оператор PIG выдает ошибку, но, давая оператор как dump movies;, он выдает ошибку и показывает, что ввод и вывод не выполняются.

Подскажите, пожалуйста, как загрузить данные с помощью оператора pig.

2
RKCY 5 Мар 2015 в 20:23

3 ответа

Лучший ответ

Если ваш входной файл находится на локальном уровне, вы можете войти в оболочку grunt, набрав pig -x local

Если вы войдете в оболочку grunt, вы можете ввести следующую инструкцию

 record = LOAD  '/home/hadoop/Desktop/script/sample.csv' using PigStorage(',') as (id:int,name:chararray,year:chararray,rating:chararray,duration:int); 


dump record;

Если ваш входной файл не находится в локальном, сначала вам нужно скопировать этот файл из локального в HDFS, используя команду ниже

hadoop dfs -put <path of file at local>  <path of hdfs dir>

После загрузки файла в HDFS вы можете войти в режим уменьшения карты, набрав свинью

Снова будет открыта хрюкающая оболочка. ia при условии, что ваше местоположение HDFS выглядит примерно так, как показано ниже в инструкции LOAD

record = LOAD  '/user/hadoop/inputfiles/sample.csv' using PigStorage(',') as (id:int,name:chararray,year:chararray,rating:chararray,duration:int); 


dump record;
2
Surender Raja 5 Мар 2015 в 18:58

Откройте оболочку pig в локальном режиме с помощью pig -x local, и если ваш файл присутствует в hdfs, вы можете использовать pig, чтобы открыть оболочку гранта.

$pig -x local
grunt> movies = load '/home/hadoop/Desktop/script/sample.csv' using PigStorage(',') as (id:int,name:chararray,year:chararray,rating:chararray,duration:chararray);


grunt> dump movies;
0
swapnil kolapkar 19 Июл 2017 в 10:04

Вы также можете использовать команду copyFromLocal в оболочке grunt, чтобы переместить локальный файл в hdfs.

1
Rashid Ali 9 Мар 2015 в 01:42