Spark 로컬 파일 및 HDFS 파일 읽기
1779 단어 Spark
전언
옆에 있는 인턴은 또 어리둥절한 표정을 지었다. 스파크에 버그가 있는데 분명히 내 로컬/data 디렉터리에 테스트가 있다.txt 파일이지만 실행하면 오류가 발생합니다.
Caused by: java.io.FileNotFoundException: File file:/data/test.txt does not exist
내가 보기에, 원래 젊은이는 spark 집단 모드를 사용하여 자기 클라이언트에만 저장된 텍스트 파일을 읽었다
로컬 파일을 읽는 방법
Spark는 로컬 파일 시스템에서 파일을 읽을 수 있지만, 그룹의 모든 노드의 같은 경로에서 파일을 찾을 수 있도록 합니다.
읽기 방식: 만약 데이터가 집단의 모든 노드의 같은 경로 아래에 있다면 file://경로로 입력하기만 하면 됩니다.스파크가 자동으로 처리됩니다.
val df = spark.read.textFile("file:///data/test.txt")
만약 파일이 그룹의 모든 노드에 놓여 있지 않다면, 드라이브 프로그램에서 이 파일을 로컬에서 읽을 수 있으며, 전체 그룹을 사용하지 않고parallelize를 호출해서 작업 노드에 내용을 나누어 줄 수 있습니다.그러나 이런 방식은 비교적 느릴 수 있기 때문에 추천하는 방법은 HDFS, NFS, S3 등 공유 파일 시스템에 파일을 먼저 놓는 것이다.
그러나 우리는 항상 소량의 데이터를 가지고 로컬에서 테스트를 하는데, 이럴 때는 로컬모드를 사용하여 로컬데이터를 읽어야 한다
Spark Shell 시작 로컬 모드
spark2-shell --master local[2]
시작이 완료되면 로컬 파일을 읽을 수 있습니다.
scala> spark.read.textFile("file:///data/test.txt").show()
+-----+
|value|
+-----+
| 1,zs|
| 2,ls|
| 3,ww|
| 4,zl|
+-----+
Spark Submit 시작 로컬 모드
코드:
import org.apache.spark.sql.SparkSession
object Local_HDFS {
def main(args: Array[String]): Unit = {
val spark = SparkSession
.builder
.appName(this.getClass.getSimpleName)
.getOrCreate()
spark.read.textFile(args(0)).show()
spark.stop()
}
}
패키지로 업로드한 후 로컬 모드를 시작합니다.
spark2-submit --master local[2] --class test.Local_HDFS Test.jar file:///data/test.txt
이렇게 해도 결과를 얻을 수 있다.
+-----+
|value|
+-----+
| 1,zs|
| 2,ls|
| 3,ww|
| 4,zl|
+-----+
참고: Jar 패키지는 클라이언트 로컬 및 HDFS 모두에 배치할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
해결 오류:Unable to find encoder for typestored in a DatasetPrimitive types (Int, String, etc) and Product types (case classes) are supported by importing spark.implicits._ Suppor...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.