spark-sql을 사용하여 파일을 읽어야하고 파일이 현재 디렉토리에 있습니다.Spark-SQL : 현재 작업자 노드 디렉토리의 파일에 액세스합니다.
이 명령을 사용하여 HDFS에 저장된 파일의 목록을 압축 해제합니다.
val decompressCommand = Seq(laszippath, "-i", inputFileName , "-o", "out.las").!!
파일은 현재 작업자 노드 디렉토리에 출력하고, 스칼라를 통해 "ls -a"!!
을 실행 I 파일이 있음을 볼 수 있기 때문에 나는 이것을 알고있다.
val dataFrame = sqlContext.read.las("out.las")
내가 SQL 컨텍스트는 현재 디렉토리에있는 파일을 찾기 위해 노력할 것이라고 가정하지만,하지 않습니다 : 나는 다음 명령에 액세스하려고합니다. 또한 오류는 발생시키지 않지만 파일을 찾을 수 없다는 경고를 표시합니다 (스파크가 계속 실행 됨).
sparkContext.addFile("out.las")
을 사용하여 파일을 추가 한 다음 val location = SparkFiles.get("out.las")
을 사용하여 위치에 액세스하려고 시도했지만이 방법도 작동하지 않았습니다.
나는 심지어 val locationPt = "pwd"!!
명령을 실행 한 다음 val fullLocation = locationPt + "/out.las"
을 사용했지만 그 값을 사용하려고 시도했으나 작동하지 않았습니다.
발생됩니다 실제 예외는 다음과 같다 :
User class threw exception: org.apache.spark.sql.AnalysisException: cannot resolve 'x' given input columns: [];
org.apache.spark.sql.AnalysisException: cannot resolve 'x' given input columns: []
을 그리고 나는 dataframe에서 열 'x'를 액세스하려고 할 때 발생합니다. HDFS에서 파일의 일부를 다운로드하고 로컬에서 압축을 풀고 테스트를 실행했기 때문에 'X'열이 있다는 것을 알고 있습니다.
1.6TB의 데이터를 가지고 있으므로 한 번에 압축을 풀고 나중에 액세스 할 수 없으므로 하나씩 파일 압축을 풀어야합니다.
작업자 노드 디렉토리로 출력되는 파일에 액세스하려면 무엇을 할 수 있습니까? 아니면 다른 방법으로해야할까요?
이중 느낌표는 무엇입니까? –
거꾸로 된 쉼표로 표시된 명령은 외부 시스템 명령으로 실행됩니다. –