
스파크 히스토리 서버를 nginx 에 설정하여 리버스 프록시로 연결할 때 APPLICATION_WEB_PROXY_BASE 설정을 하지 않으면 static 파일을 가져 오는 부분에서 오류가 발생합니다. 프록시 설정을 하고, 히스토리 서버를 실행하면 스파크 히스토리 서버의 URL에 추가됩니다.다음과 같은 상황에서 원래는 http://your-domain.com 으로 접근해야 하지만, base-proxy 가 붙은 형태로 접근할 수 있게 됩니다. export APPLICATION_WEB_PROXY_BASE=/base-proxy
스파크 히스토리 서버의 log4j 설정을 알아보겠습니다. 대상 버전은 스파크 3.5.2입니다. 스파크 히스토리 서버는 log4j2 설정을 이용하고 있습니다. 다음은 콘솔 출력(console)과 파일 출력(DRFA)을 동시에 처리하는 예제 설정입니다. ## Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements. See the NOTICE file distributed with# this work for additional information regarding copyright ownership.# The ASF licenses this file to You under the A..
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..
스파크 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..
스파크 작업을 실행하는 중에 기본 압축 코덱의 라이브러리가 없을 때 다음 오류가 발생합니다. 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..
스파크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 설정을..
스파크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...

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..
스파크에서 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..
스파크쉘으르 이용하여 작업을 실행하면 작업에 필요한 라이브러리를 묶어서 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..

스파크쉘의 마스터를 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..
pyspark에서 UDF를 이용하는 방법을 알아보겠습니다.
pyspark와 Hive 서버와 연동하는 방법을 알아보겠습니다.
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
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
스파크 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..
스파크 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..
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..
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..
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..
스파크를 스파크 쉘(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..
스파크 데이터프레임에서 칼럼을 추가하거나, 한 칼럼의 값을 다른 값으로 변경 할 때는 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| ..
머신러닝(기계학습)은 인공 지능의 한 분야로 컴퓨터가 학습을 할 수 있도록 알고리즘과 기술을 개발하는 것입니다. 예를 들어 기계학습을 통해 스팸메일을 가려낼 수 있습니다. 머신러닝의 핵심은 표현과 일반화 입니다. 표현이란 데이터의 평가이며 일반화는 아직 알 수 없는 데이터이 처리입니다. 스파크의 MLib는 이 머신러닝 처리를 가능하게 하는 라이브러리 입니다. 기본적으로 제공하는 알고리즘은 다음과 같습니다. 통계(Statistics) 분류(Classification) 회귀(Regression) 협업 필터링(Collaborative Filtering) 클러스터링(Clustering) 차원 축소(Dimensionality Reduction) 특징 추출(Feautre Extraction) 빈발 패턴 마이닝(Fr..
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... 이 오류가 발생해도 데이터를 생성되는 데 아..
현재 사용하고 있는 스파크 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..
RDD, DataFrame, Dataset의 직렬화 개선 스파크는 성능개선을 위해서 프로젝트 텅스텐을 진행하면서 RDD를 DataFrame, Dataset 으로 개선하였다. RDD -> DataFrame(v1.4) -> Dataset(v1.6) -> DataFrame, Dataset 통합(v2.0) 이 개선을 진행하면서 속도를 높이기 위해서 데이터를 더 빨리 가져오기 위해서 자바직렬화를 이용하던것을 kyro로 바꾸고 또, Encoder/Decoder를 직접 개선하였다. 메모리에 있는 데이터를 셔플이 발생하면 다른 곳으로 옮기게 되고, 이 시점에 데이터를 직렬화/역직렬화 하는 비용을 Encoder/Decoder를 이용하여 개선할 수 있었다. (데이타 브릭스 자료) off-heap 모델 또한 스파크의 메모리..
- Total
- Today
- Yesterday
- 알고리즘
- ubuntu
- SQL
- AWS
- airflow
- nodejs
- 하이브
- java
- yarn
- 오류
- Linux
- hbase
- Python
- bash
- 파이썬
- oozie
- HDFS
- build
- 백준
- 하둡
- Hadoop
- error
- mysql
- HIVE
- 다이나믹
- 정올
- emr
- Tez
- SPARK
- S3
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |