Cucumber-Hadoop: Как читать файлы объектов огурца из папки HDFS? - PullRequest
0 голосов
/ 16 октября 2018

Я использую метод import cucumber.api.cli.Main для вызова основного метода огурца, например

Main.main(
    Array(glue,gluePath,tag,tagName,plugin,pluginNameAndPath,
        "hdfs:///user/test/hdfs.feature"))

Можно ли читать файлы объектов из расположения HDFS, так как он работает с локальным путем?

Способ чтения пути hdfs -

val fs = FileSystem.get(new Configuration());
val fsDataInputStream = fs.open(new Path("/user/test/hdfs.feature"))

, который я также могу преобразовать во входной поток, но проблема заключается в том, что Array () принимает только строку, а читатель hdfs возвращает входной поток, а также FileSystem.Есть ли какое-либо решение этой проблемы?

Для получения дополнительной информации - эта проблема существует, когда я использую "spark-submit --master yarn --deploy-mode cluster ".

Работает нормально для "spark-submit --master yarn --deploy-mode client ".

1 Ответ

0 голосов
/ 10 декабря 2018

Вот ответ на мой вопрос, предоставьте все свои файлы объектов, используя --files, например

spark-submit --master yarn --deploy-mode cluster --queue cbi_ops --driver-memory 10G 
--executor-memory 5G --executor-cores 5 --num-executors 5 \
--jars $jars_path \
--files $files_path \
--driver-class-path xx.jar \
--class RunnerMain \
xx.jar \
"-g" "xx.stepdefinitions" \
"-t" "@functional-test,@regression-test" \

, добавьте все файлы в коде, используя

sqlContext.sparkContext.addFile(x)

, затем используйте вМассив через SparkFiles.get, как:

Array(glue,gluePath,tag,tagName,plugin,pluginNameAndPath,plugin,pluginNameAndPathJson,
            SparkFiles.get("ingestion-mc-ris-r2d-inc.feature"))
...