s3-dist-cp groupBy эквивалентно на Dataproc с использованием команд hadoop distcp - PullRequest
1 голос
/ 07 апреля 2019

В EMR я использую s3-dist-cp --groupBy, чтобы присвоить файлу случайное значение fileName в папке с именем, которому я хочу переименовать его в S3:

s3-dist-cp --groupBy='.*(folder_in_hdfs).*' --src=hdfs:///user/testUser/tmp-location/folder_in_hdfs --dest=s3://testLocation/folder_in_s3

Пример:

hadoop fs -ls hdfs:///user/testUser/tmp-location/folder_in_hdfs
Found 2 items
-rw-r--r--   1 hadoop hadoop          0 2019-04-05 14:54 hdfs:///user/testUser/tmp-location/folder_in_hdfs/file.csv/_SUCCESS
-rw-r--r--   1 hadoop hadoop     493077 2019-04-05 14:54 hdfs:///user/testUser/tmp-location/folder_in_hdfs/file.csv/part-00000-12db8851-31be-4b08-8a93-1887e534941d-c000.csv

После запуска s3-dist-cp,

aws s3 ls s3://testLocation/folder_in_s3/
s3://testLocation/folder_in_s3/file.csv

Однако я хотел бы добиться этой функциональности на Dataproc с помощью команд hadoop distcp и записать файл в GCSместоположение gs://testLocation/folder_in_gs/file.csv

Любая помощь приветствуется.

1 Ответ

1 голос
/ 08 апреля 2019

Dataproc не имеет такой возможности в DistCp.

Тем не менее, достичь такого же результата тривиально с помощью простого bash-скрипта, который использует gsutil compose после запуска DistCp:

.
DESTINATION=gs://bucket/path/to/destination/file
FILES=($(gsutil ls gs://testLocation/**folder_in_gs**))
gsutil compose "${FILES[@]::32}" "${DESTINATION}"
echo "${FILES[@]:32}"| xargs -n 1 | xargs -i gsutil compose "${DESTINATION}" {} "${DESTINATION}"
gsutil -m rm gs://testLocation/**folder_in_gs**
...