如何使用hive的udf
- 可以使用spark-sql --jars /opt/hive/udf.jar,指定udf的路徑
- 還可以在spark-default.conf里指定spark.jars /opt/hive/udf.jar
Truncated the string representation of a plan since it was too large
在spark-default.conf 里設置
spark.sql.debug.maxToStringFields 2000
spark.debug.maxToStringFields 2000
使用sparksql默認情況下會生成很多小文件,設置如下參數可以解決:
set spark.sql.adaptive.enabled=true;
具體可以參考:
https://www.jianshu.com/p/ddd2382a738a
在spark-default.conf里添加:spark.hadoop.hive.exec.orc.split.strategy ETL
spark.hadoop.hive.exec.orc.split.strategy是用來設置spark在讀取orc文件時候的策略的,
BI策略以文件為粒度進行split划分;ETL策略會將文件進行切分,多個stripe組成一個split;
HYBRID策略為:當文件的平均大小大於hadoop最大split值(默認256M)時使用ETL策略,否則使用BI策略。
對於一些較大的ORC表,可能其footer(用於描述整個文件的基本信息、表結構信息、行數、各個字段的統計信息以及各個Stripe的信息)較大,ETL策略可能會導致其從hdfs拉取大量的數據來切分split,甚至會導致driver端OOM,因此這類表的讀取建議使用BI策略。
對於一些較小的尤其有數據傾斜的表(這里的數據傾斜指大量stripe存儲於少數文件中),建議使用ETL策略
這里的原因還沒有調查,只是在網上查了個方法。
參考:https://www.cnblogs.com/barneywill/p/10142244.html
https://blog.csdn.net/Jiaoxin02/article/details/99293135
