빅데이터/spark38 [spark] spark-shell 실행 시 발생하는 java.lang.NoSuchFieldError: JAVA_9 오류 처리 spark-shell을 실행할 때 다음과 같은 오류가 발생하는 경우가 있습니다. 24/02/22 13:09:59 INFO SparkEnv: Registering MapOutputTracker 24/02/22 13:09:59 INFO SparkEnv: Registering BlockManagerMaster 24/02/22 13:09:59 INFO BlockManagerMasterEndpoint: Using org.apache.spark.storage.DefaultTopologyMapper for getting topology information 24/02/22 13:09:59 INFO BlockManagerMasterEndpoint: BlockManagerMasterEndpoint up java.lang.. 2024. 2. 25. [jupyter] spark 2.4.6 에서 jupyter 노트북 연동 시 TypeError: an integer is required (got type bytes) 오류 처리 스파크 2.4.6 버전에서 jupyter 노트북을 연결할 때 다음과 같은 오류가 발생합니다. 스파크 2.4.6은 python2 버전을 사용하게 되어 있는데, jupyter 노트북이 python3 으로 되어 있어서 오류가 발생합니다. TypeError: an integer is required (got type bytes) 스택 오버플로우 등에서 추천하는 해결 방법은 파이썬 3.7로 쥬피터를 실행하는 방법입니다. 기존에 설치된 파이썬 버전을 확인하고 3.7 버전을 설치 하면 동작합니다. 또는 스파크 소스코드를 수정하여 처리할 수 있습니다. SPARK_HOME/python/pyspark/cloudpickle.py 파일을 수정합니다. https://stackoverflow.com/questions/587003.. 2023. 3. 16. [spark] pyspark 의 파이썬 패스 설정 pyspark 를 실행하는 서버와 실제 작업을 실행하는 YARN 클러스터의 파이썬 패스가 다를 경우 실행하는 파이썬 패스(PYSPARK_PYTHON)를 드라이버, 워커, 실행서버 별로 설정을 해야 합니다. 파이썬 패스 설정 2022. 3. 7. [spark] java.lang.NoSuchMethodError: net.jpountz.lz4.LZ4BlockInputStream.<init>(Ljava/io/InputStream;Z)V 오류 수정 스파크 작업을 실행하는 중에 기본 압축 코덱의 라이브러리가 없을 때 다음 오류가 발생합니다. Job aborted due to stage failure: Task 2 in stage 0.0 failed 4 times, most recent failure: Lost task 2.3 in stage 0.0 (TID 10, hadoop-worker-1.com, executor 2): java.lang.NoSuchMethodError: net.jpountz.lz4.LZ4BlockInputStream.(Ljava/io/InputStream;Z)V at org.apache.spark.io.LZ4CompressionCodec.compressedInputStream(CompressionCodec.scala:122) a.. 2022. 1. 30. [spark] spark3와 hive3 메타스토어 연동 스파크3와 하이브3 메타스토어를 연동하는 방법은 다음과 같습니다. 스파크-하이브 라이브러리 추가 spark-hive_2.12-3.1.2.jar를 다운로드하고 ${SPARK_HOME}/jars 에 추가 jline 2.14.6 라이브러리 추가 기존 라이브러리 버전이 낮아서 다음 오류가 발생 스파크3 버전에 따라 오류가 발생하지 않으면 추가 하지 않아도 됨 ${SPARK_HOME}/conf 에 hive-site.xml 에 hive 라이브러리 추가 export SPARK_DIST_CLASSPATH=$(hadoop classpath):/opt/hive/lib/* ${SPARK_HOME}/conf 에 hive-site.xml 추가 hive-site.xml 파일을 추가하고, hive.metastore.uris 설정을.. 2021. 6. 21. [spark] spark2와 hive2 메타스토어 연동 스파크2와 하이브메타 스토어를 연동하는 방법은 다음과 같습니다. 스파크-하이브 라이브러리 추가 spark-hive_2.11-2.4.6.jar 를 다운로드하고 ${SPARK_HOME}/jars 에 추가 스파크2용 하이브1 라이브러리 빌드를 추가 hive-cli-1.2.1.spark2.jar 를 다운로드하고 ${SPARK_HOME}/jars 에 추가 hive-beeline-1.2.1.spark2.jar hive-exec-1.2.1.spark2.jar hive-jdbc-1.2.1.spark2.jar hive-metastore-1.2.1.spark2.jar libthrift-0.9.3.jar libfb303-0.9.3.jar ${SPARK_HOME}/conf 에 hive-site.xml 추가 hive-site... 2021. 6. 21. [spark] spark2와 hive2 메타스토어 연결 오류 수정. java.lang.NoSuchFieldError: HIVE_STATS_JDBC_TIMEOUT spark2.x 와 hive 2.x 버전의 메타스토어를 연결하면 오류가 발생합니다. 지라에는 스파크 2.2 버전에서는 해결이 됐다고 나오지만 저는 2.4.6 버전에서도 오류가 발생했습니다. 관련 지라는 다음과 같습니다. https://issues.apache.org/jira/browse/SPARK-18112 [SPARK-18112] Spark2.x does not support read data from Hive 2.x metastore - ASF JIRA Hive2.0 has been released in February 2016, after that Hive2.0.1 and Hive2.1.0 have also been released for a long time, but till now spark o.. 2021. 6. 21. [spark] spark에서 snappy 라이브러리를 찾지 못할때 수정 방법 : java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy 스파크에서 snappy 압축 방식으로 파일을 쓸 때 라이브러를 가져오지 못할 때 다음과 같은 오류가 발생합니다 Caused by: java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z at org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy(Native Method) at org.apache.hadoop.io.compress.SnappyCodec.checkNativeCodeLoaded(SnappyCodec.java:63) at org.apache.hadoop.io.compress.SnappyCodec.getCompressorType(S.. 2021. 3. 18. [pyspark] pyspark 실행시 python: command not found 오류 pyspark 쉘을 실행하는 시점에 python 커맨드를 찾지 못한다는 오류가 발생하면 원인은 두 가지로 생각할 수 있습니다. 파이썬을 설치 하지 않음 파이썬을 설치 한다. 파이썬을 설치 했지만 python 명령이 아니라 python3나 python3.7 등의 버전명으로 명령어가 생성 PYSPARK_PYTHON 환경변수를 설정 2021. 3. 18. [spark] __spark_libs__.zip does not exist 오류 해결 방법 스파크쉘으르 이용하여 작업을 실행하면 작업에 필요한 라이브러리를 묶어서 hdfs에 올리고, 이 라이브러리를 사용해서 워커노드에서 작업을 처리합니다. 따라서 hdfs연결 설정이 올바르지 않으면 해당 오류가 발생합니다. java.io.FileNotFoundException: File file:/tmp/spark-126d2844-5b37-461b-98a4-3f3de5ece91b/__spark_libs__3045590511279655158.zip does not exist at org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus(RawLocalFileSystem.java:611)해결방법 /etc/spark/spark-env.sh에서 configura.. 2020. 9. 14. [spark] Service 'sparkDriver' could not bind on a random free port. 오류 해결 스파크쉘의 마스터를 yarn으로 설정하고 yarn 클러스터 외부의 클라이언트에서 실행할 때 다음의 오류가 발생하는 경우가 있습니다. 오류 $ ./spark-shell --master yarn Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). 20/09/09 16:01:26 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 20/09/09 16:0.. 2020. 9. 13. [pyspark] pyspark에서 udf를 이용하는 방법 pyspark에서 UDF를 이용하는 방법을 알아보겠습니다. 2020. 6. 8. [pyspark] pyspark와 Hive 연동 pyspark와 Hive 서버와 연동하는 방법을 알아보겠습니다. 2020. 6. 8. [pyspark] 데이터프레임 생성 pyspark에서 스파크세션(SparkSession)과 스파크컨텍스트(SparkContext)를 이용해서 데이터프레임을 생성하는 방법을 알아보겠습니다. 2020. 6. 8. [pyspark] CSV파일로 데이터프레임 생성 pyspark에서 스파크세션을 이용하여 CSV파일을 읽어서 데이터프레임을 생성하는 예제를 알아보겠습니다. ; 2020. 6. 4. [spark-sql] tez.lib.uris is not defined 오류 처리 방법 Spark SQL을 이용할 때 tez.lib.uris is not defined in the configuration 오류가 발생하는 경우 hive-site.xml파일에 tez 환경 설정을 넣어주면 됩니다. : org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: org.apache.tez.dag.api.TezUncheckedException: Invalid configuration of tez jars, tez.lib.uris is not defined in the configuration; 설정 추가 tez.lib.uris hdfs:///apps/tez/tez.tar.gz tez.use.cluster.hadoop-libs true 2020. 1. 14. [spark] org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: org.apache.tez.dag.api.TezUncheckedException: Invalid configuration of tez jars, tez.lib.uris is not defined in the configuration; 오류 해결 방법 Spark SQL을 이용할 때 다음의 오류가 발생하는 경우 tez 환경 설정을 넣어주면 됩니다. : org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: org.apache.tez.dag.api.TezUncheckedException: Invalid configuration of tez jars, tez.lib.uris is not defined in the configuration; 설정 tez.lib.uris hdfs:///apps/tez/tez.tar.gz tez.use.cluster.hadoop-libs true 2019. 11. 20. [spark] JDBC드라이버를 이용하여 spark sql로 데이터 가져오는 방법 스파크 SQL에서는 JDBC드라이버를 이용해서 데이베이스에 직접 접근해서 정보를 가져올 수 있습니다. spark-shell, spark-submit으로 실행할 때 데이터베이스에 접근하기 위한 jar 파일을 함께 제공해야 합니다. 샘플 코드 import java.util.Properties // 프로퍼티 설정 val prop = new Properties() prop.put("user", "db_user_name") prop.put("password", "db_password") // 데이터베이스 연결 및 뷰 생성 val tableDf = spark.read.jdbc("jdbc:mysql://mysql_url:mysql_port/database_name", "table_name", prop) tableDf.. 2019. 11. 13. [spark] Exception in thread "main" java.sql.SQLException: No suitable driver 오류 해결 방법 스파크 SQL에서는 JDBC 드라이버를 이용해서 데이터베이스에 접근할 때 다음과 같은 오류가 발생하는 경우가 있습니다. 에러 로그 19/11/12 03:07:36 INFO StateStoreCoordinatorRef: Registered StateStoreCoordinator endpoint Exception in thread "main" java.sql.SQLException: No suitable driver at java.sql.DriverManager.getDriver(DriverManager.java:315) at org.apache.spark.sql.execution.datasources.jdbc.JDBCOptions$$anonfun$6.apply(JDBCOptions.scala:105) at.. 2019. 11. 13. [spark] Unable to instantiate SparkSession with Hive support because Hive classes are not found. 오류 해결 방법 EMR 5.24에서 우지와 스파크 sql을 이용하여 작업을 하려고 하면 다음과 같은 오류가 발생합니다. 에러로그 Caused by: java.lang.IllegalArgumentException: Unable to instantiate SparkSession with Hive support because Hive classes are not found. at org.apache.spark.sql.SparkSession$Builder.enableHiveSupport(SparkSession.scala:870) at com.sec.bigdata3.analyzer.scala.profile.RunestoneProfile$.main(RunestoneProfile.scala:32) at com.sec.bigdata3.. 2019. 11. 8. [spark] AWS EMR에서 Caused by: java.lang.ClassNotFoundException: org.apache.kafka.common.serialization.ByteArrayDeserializer 오류 발생시 해결 방법 AWS-EMR 에서 카프카와 스파크를 연동할 때 다음의 오류가 발생하면 kafka-client jar 파일을 추가해 주면 됩니다. scala> val query = df.writeStream.outputMode("append").format("console").start() java.lang.NoClassDefFoundError: org/apache/kafka/common/serialization/ByteArrayDeserializer at org.apache.spark.sql.kafka010.KafkaSourceProvider.createSource(KafkaSourceProvider.scala:74) at org.apache.spark.sql.execution.datasources.DataSource.. 2019. 10. 14. [spark] AWS-EMR에서 스파크와 카프카 연동에서 발생한 Caused by: java.lang.ClassNotFoundException: kafka.DefaultSource 오류 해결 방법 AWS EMR에서 스파크와 카프카를 연동할 때 EMR은 카프카 라이브러리를 기본적으로 제공하지 않기 때문에 다음과 같은 오류가 발생합니다. scala> val df = spark.readStream.format("kafka").option("kafka.bootstrap.servers","localhost:9092").option("subscribe","test").load() java.lang.ClassNotFoundException: Failed to find data source: kafka. Please find packages at https://cwiki.apache.org/confluence/display/SPARK/Third+Party+Projects at org.apache.spark.sq.. 2019. 10. 14. [spark] <console>:23: error: overloaded method value option with alternatives: 오류 스파크를 스파크 쉘(spark-shell)을 이용하여 처리할 때 카프카와 연동할 때 다음의 오류가 발생하는 경우가 있습니다. scala> val df = spark.readStream.format("kafka").option("kafka.bootstrap.servers=localhost:9092").option("subscribe=test").load() :23: error: overloaded method value option with alternatives: (key: String,value: Double)org.apache.spark.sql.streaming.DataStreamReader (key: String,value: Long)org.apache.spark.sql.streaming.DataS.. 2019. 10. 14. [spark-dataframe] 데이터 프레임에 새로운 칼럼 추가 스파크 데이터프레임에서 칼럼을 추가하거나, 한 칼럼의 값을 다른 값으로 변경 할 때는 withColumn 함수를 이용합니다. val df = spark.read.json("/user/people.json") scala> df.show() +----+-------+ | age| name| +----+-------+ |null|Michael| | 30| Andy| | 19| Justin| +----+-------+ // 새로운 칼럼 추가 scala> df.withColumn("xx", $"name").show() +----+-------+-------+ | age| name| xx| +----+-------+-------+ |null|Michael|Michael| | 30| Andy| Andy| | 19| .. 2019. 8. 8. [spark] MLib 라이브러리 머신러닝(기계학습)은 인공 지능의 한 분야로 컴퓨터가 학습을 할 수 있도록 알고리즘과 기술을 개발하는 것입니다. 예를 들어 기계학습을 통해 스팸메일을 가려낼 수 있습니다. 머신러닝의 핵심은 표현과 일반화 입니다. 표현이란 데이터의 평가이며 일반화는 아직 알 수 없는 데이터이 처리입니다. 스파크의 MLib는 이 머신러닝 처리를 가능하게 하는 라이브러리 입니다. 기본적으로 제공하는 알고리즘은 다음과 같습니다. 통계(Statistics) 분류(Classification) 회귀(Regression) 협업 필터링(Collaborative Filtering) 클러스터링(Clustering) 차원 축소(Dimensionality Reduction) 특징 추출(Feautre Extraction) 빈발 패턴 마이닝(Fr.. 2019. 4. 11. [spark] AWS EMR에서 spark-sql을 이용하여 s3 테이블에 데이터를 쓸 때 발생하는 chgrp 오류 AWS의 EMR에서 spark-sql을 이용하여 s3를 로케이션으로 가지는 테이블에 데이터를 쓰면 chgrp 오류가 발생합니다. scala> sql("""insert into table s3_table select * from sample1""").show() -chgrp: '' does not match expected pattern for group Usage: hadoop fs [generic options] -chgrp [-R] GROUP PATH... -chgrp: '' does not match expected pattern for group Usage: hadoop fs [generic options] -chgrp [-R] GROUP PATH... 이 오류가 발생해도 데이터를 생성되는 데 아.. 2019. 3. 26. [spark] 스파크 2.0.2 버전 SQL에서 발생하는 MalformedURLException: unknown protocol: hdfs 오류 처리 현재 사용하고 있는 스파크 2.0.2버전에서 SQL을 이용하여 하이브의 ADD JAR 명령을 실행하면 다음과 같은 오류가 발생합니다. scala> sql("""ADD JAR 'hdfs:///user/a.jar'""")scala> sql("""ADD FILE 'hdfs:///user/b.txt'""") 19/03/22 06:40:35 INFO SparkSqlParser: Parsing command: ADD JAR 'hdfs:///user/a.jar' java.net.MalformedURLException: unknown protocol: hdfs at java.net.URL.(URL.java:600) at java.net.URL.(URL.java:490) at java.net.URL.(URL.java:4.. 2019. 3. 22. [spark] 스파크 2.0의 성능개선-직렬화,off-heap,옵티마이저 RDD, DataFrame, Dataset의 직렬화 개선 스파크는 성능개선을 위해서 프로젝트 텅스텐을 진행하면서 RDD를 DataFrame, Dataset 으로 개선하였다. RDD -> DataFrame(v1.4) -> Dataset(v1.6) -> DataFrame, Dataset 통합(v2.0) 이 개선을 진행하면서 속도를 높이기 위해서 데이터를 더 빨리 가져오기 위해서 자바직렬화를 이용하던것을 kyro로 바꾸고 또, Encoder/Decoder를 직접 개선하였다. 메모리에 있는 데이터를 셔플이 발생하면 다른 곳으로 옮기게 되고, 이 시점에 데이터를 직렬화/역직렬화 하는 비용을 Encoder/Decoder를 이용하여 개선할 수 있었다. (데이타 브릭스 자료) off-heap 모델 또한 스파크의 메모리.. 2019. 3. 7. [spark] 스파크 작업 실행하고 처리시간(elapsed) 확인 스칼라쉘에서 스파크로 작업을 작업을 하고 처리시간을 확인하고 싶을때는 SparkSession의 time() 함수를 이용합니다. spark.time(실행 함수) spark.time(sql("select * from tbl")) AWS EMR이의 스파크에는 해당 함수가 없어서 SparkSession에서 함수를 가져와서 이용하면 됩니다. 다른 작업에서도 처리 시간을 알고 싶을 때 이용하면 됩니다. scala> time(sql("use db"))Time taken: 12 ms res7: org.apache.spark.sql.DataFrame = [] 위와 같이 처리하면 Time taken으로 처리 시간을 확인할 수 있습니다. SparkSession 스칼라 소스코드: 바로가기 2019. 3. 6. [scala] 이클립스를 이용하여 스파크의 스칼라 개발환경 설정하기 스칼라(scala) 개발을 연습하기 위해서 이클립스에 스칼라 개발 환경을 설정하고, 빌드하여 jar 파일을 만드는 것까지 설정하는 방법을 정리해 보겠다. 우선 이클립스를 설치한다. 저는 가장 최신버전인 4.7 Oxygen 버전을 설치하였다. 그리고 Help -> Eclipse Market Place 에서 scala를 검색하여 Scala IDE 4.7.x 를 설치한다. 이 플러그인을 설치하면 스칼라 라이브러리도 설치된다. 설치후 File -> New -> Scala Project 를 선택하여 스칼라 프로젝트를 생성한다. 그리고 Scala Library container에서 오른쪽 버튼을 클릭하여 properties 로 들어가서 스칼라 라이브러리를 2.11로 변경한다. 현재 스파크의 스칼라 버전이 2.11이.. 2018. 6. 11. 이전 1 2 다음