아래와 같은 에러가 발생하는 이슈가 있다.

Caused by: org.apache.spark.SparkException: Unable to create database default as failed to create its directory /home/morris/server/spark/spark-warehouse
        at org.apache.spark.sql.catalyst.catalog.InMemoryCatalog.liftedTree1$1(InMemoryCatalog.scala:114)
        at org.apache.spark.sql.catalyst.catalog.InMemoryCatalog.createDatabase(InMemoryCatalog.scala:108)
        at org.apache.spark.sql.internal.SharedState.<init>(SharedState.scala:99)
        at org.apache.spark.sql.SparkSession$$anonfun$sharedState$1.apply(SparkSession.scala:101)
        at org.apache.spark.sql.SparkSession$$anonfun$sharedState$1.apply(SparkSession.scala:101)
        at scala.Option.getOrElse(Option.scala:121)
        at org.apache.spark.sql.SparkSession.sharedState$lzycompute(SparkSession.scala:101)
        at org.apache.spark.sql.SparkSession.sharedState(SparkSession.scala:100)
        at org.apache.spark.sql.internal.SessionState.<init>(SessionState.scala:157)
        ... 26 more
Caused by: java.net.ConnectException: Call From localhost/192.168.76.102 to namenode:9000 failed on connection exception: java.net.ConnectException: 연결이 거부됨; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

위의 내용은 데이터 파일을 읽어올 때, 경로가 아래와 같이 일반 url이 적혀있어서 에러가 발생한다.
        Dataset<Row> dataset = sparkSession.read()
                .format("csv")
                .option("header", "true")
                .load("/home/morris/data/TestData.csv");

위와 같이 아무것도 적어주지 않으면 default로 hdfs의 namenode에 접속을 한다.

로컬의 파일을 선택할 경우에는 아래와 같이 file:// 을 붙여줘야한다.

        Dataset<Row> dataset = sparkSession.read()
                .format("csv")
                .option("header", "true")
                .load("file:///home/morris/data/TestData.csv");

+ Recent posts