este problema se puede abordar de diversas maneras, por lo tanto te damos la que en nuestra opinión es la solución más completa.
Solución:
Puede acceder a los archivos HDFS a través de la ruta completa si no se proporciona ninguna configuración (namenodehost es su host local si hdfs se encuentra en un entorno local).
hdfs://namenodehost/inputFiles/CountOfMonteCristo/BookText.txt
Dado que no proporciona autoridad, el URI debería tener este aspecto:
hdfs:///inputFiles/CountOfMonteCristo/BookText.txt
de lo contrario inputFiles
se interpreta como un nombre de host. Con la configuración correcta, no debería necesitar ningún esquema en absoluto:
/inputFiles/CountOfMonteCristo/BookText.txt
en lugar de.
Hay dos formas generales de leer archivos en Spark, una para archivos de gran distribución para procesarlos en paralelo, otra para leer archivos pequeños como tablas de búsqueda y configuración en HDFS. Para este último, es posible que desee leer un archivo en el nodo del controlador o en los trabajadores como una sola lectura (no como una lectura distribuida). En ese caso, debe utilizar SparkFiles
módulo como a continuación.
# spark is a SparkSession instance
from pyspark import SparkFiles
spark.sparkContext.addFile('hdfs:///user/bekce/myfile.json')
with open(SparkFiles.get('myfile.json'), 'rb') as handle:
j = json.load(handle)
or_do_whatever_with(handle)