spark sql 優化心得


本篇文章主要記錄最近在使用spark sql 時遇到的問題已經使用心得。

 

1 spark 2.0.1 中,啟動thriftserver 或者是spark-sql時,如果希望spark-sql run on hdfs,那樣需要增加參數 "--conf spark.sql.warehouse.dir=hdfs://HOSTNAME:9000/user/hive/warehouse"

例如啟動thriftserver:

bin/start-thriftserver.sh --master spark://HOSTNAME:7077 --conf spark.sql.warehouse.dir=hdfs://HOSTNAME:9000/user/hive/warehouse --driver-memory 2g --executor-memory 35g

說明

    spark.sql.warehouse.dir 這個參數如果不指定,spark sql 會自動在SPARK_HOME 建立一個 spark-warehouse 目錄,里面保存對應的數據

    driver-memory 參數為執行的app 所能使用的內存大小

    executor-memory 參數設置當前任務將占用spark 集群中每個worker的內存

    CORE 不指定的話,默認使用每個worker 所有的CPU 數目

 

2 如果spark sql 是run on hdfs,則用戶在beeline中向其他的表寫入數據時,會發生hfds權限異常錯誤

  解決方式是對hdfs 的權限設置進行關閉,在hadoop 2.7.3 版本中,關閉hdfs權限檢查的參數為

  hdfs-site.xml

     <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
     </property>

 

3 spark sql 使用parquet 壓縮方式,直接在beeline 執行類似sql 命令

CREATE TABLE parquetTable 
      (name string)
      USING org.apache.spark.sql.parquet
      OPTIONS (
         path "examples/src/main/resources/users.parquet"
      );

   或者

   CREATE TABLE parquetTable 
      (name string)
      USING org.apache.spark.sql.parquet;

 

另外

如果使用sbin/stop-all.sh 命令,集群中還有一些Worker或者是Master 進程無法退出,一般是環境混亂了導致,kill -15 PID 即可

還有一種情況,如果用戶在sbin/start-all.sh 后,發現spark 集群中莫名其妙多了幾個Worker 或者 Master 進程,同理也是環境混亂了導致,用戶只要 kill -15 PID 即可

徹底解決這種情況,用戶應該首先對spark 集群進行停機

sbin/stop-all.sh

然后對沒法停止的spark 進程進行kill -15 命令殺掉

最后用戶需要手工刪除集群中 /tmp/spark* 所有文件,保證環境干凈。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM