SparkFiles.get () не может получить загруженный файл, используя опцию --files в spark-submit - PullRequest
0 голосов
/ 05 марта 2020

Опция Spark-submit --files говорит, что к файлам можно получить доступ, используя SparkFiles.get ('files.txt')

Spark Document

Итак Я написал простую программу

from pyspark.sql import SparkSession
from pyspark import SparkFiles
spark = SparkSession.builder.enableHiveSupport().getOrCreate()

print("testfile path : "+SparkFiles.get('testfile.txt'))

df=spark.read.text(SparkFiles.get('testfile.txt'))

df.show()

и затем запустил, используя следующую команду:

spark-submit --master yarn --deploy-mode client --files testfile.txt testsubmit.py

Из журналов я вижу, что "testfile.txt" был скопирован в hdfs: //dummyIP.com: 8020 / user / root / .sparkStaging / application_1581404080152_0079 / testfile.txt

20/03/05 04:41:08 INFO Client: Source and destination file systems are the same. Not copying hdfs://dummyIP.com:8020/hdp/apps/2.6.5.0-292/spark2/spark2-hdp-yarn-archive.tar.gz
20/03/05 04:41:08 INFO Client: Uploading resource file:/root/sumit/test/testfile.txt -> hdfs://dummyIP.com:8020/user/root/.sparkStaging/application_1581404080152_0079/testfile.txt
20/03/05 04:41:09 INFO Client: Uploading resource file:/usr/hdp/current/spark2-client/python/lib/pyspark.zip -> hdfs://dummyIP.com:8020/user/root/.sparkStaging/application_1581404080152_0079/pyspark.zip

But SparkFiles.get (' testfile.txt ') пытается получить' testfile.txt 'из hdfs: //dummyIP.com: 8020 / tmp / spark-f7fedc0b-c3c7-4f6e-b72 c -fc0618a03deb / userFiles-c90e2d49-c153-4945- bbe2-b006221002f9 / testfile.txt

testfile path : /tmp/spark-f7fedc0b-c3c7-4f6e-b72c-fc0618a03deb/userFiles-c90e2d49-c153-4945-bbe2-b006221002f9/testfile.txt

Traceback (most recent call last):
  File "/root/sumit/test/testsubmit.py", line 7, in <module>
    df=spark.read.text(SparkFiles.get('testfile.txt'))
  File "/usr/hdp/current/spark2-client/python/lib/pyspark.zip/pyspark/sql/readwriter.py", line 328, in text
  File "/usr/hdp/current/spark2-client/python/lib/py4j-0.10.6-src.zip/py4j/java_gateway.py", line 1160, in __call__
  File "/usr/hdp/current/spark2-client/python/lib/pyspark.zip/pyspark/sql/utils.py", line 69, in deco
pyspark.sql.utils.AnalysisException: u'Path does not exist: hdfs://dummyIP.com:8020/tmp/spark-f7fedc0b-c3c7-4f6e-b72c-fc0618a03deb/userFiles-c90e2d49-c153-4945-bbe2-b006221002f9/testfile.txt;'

Также обратите внимание, что функция text () будет выполняться на узлах исполнителя, как упоминалось в документации Spark. Похоже, что SparkFiles.get ('files.txt') не читает из того же места, где - файлы загружает его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...