国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

pyspark訪問hive數據實戰

大數據 Spark
直接進行spark開發需要去學習scala,為了降低數據分析師的學習成本,決定前期先試用sparkSQL,能夠讓計算引擎無縫從MR切換到spark,現在主要使用pyspark訪問hive數據。

數據分析都是直接使用hive腳本進行調用,隨著APP用戶行為和日志數據量的逐漸累積,跑每天的腳本運行需要花的時間越來越長,雖然進行了sql優化,但是上spark已經提上日程。

直接進行spark開發需要去學習scala,為了降低數據分析師的學習成本,決定前期先試用sparkSQL,能夠讓計算引擎無縫從MR切換到spark,現在主要使用pyspark訪問hive數據。

以下是安裝配置過程中的詳細步驟:

1.安裝spark

需要先安裝JDK和scala,這不必多說,由于現有hadoop集群版本是采用的2.6.3,所以spark版本是下載的穩定版本spark-1.4.0-bin-hadoop2.6.tgz

我是先在一臺機器上完成了Spark的部署,Master和Slave都在一臺機器上。注意要配置免秘鑰ssh登陸。

1.1 環境變量配置

  1. export JAVA_HOME=/usr/jdk1.8.0_73 
  2. export HADOOP_HOME=/usr/hadoop 
  3. export HADOOP_CONF_DIR=/usr/hadoop/etc/hadoop 
  4. export SCALA_HOME=/usr/local/scala-2.11.7 
  5. export SPARK_HOME=/home/hadoop/spark_folder/spark-1.4.0-bin-hadoop2.6 
  6. export SPARK_MASTER_IP=127.0.0.1 
  7. export SPARK_MASTER_PORT=7077 
  8. export SPARK_MASTER_WEBUI_PORT=8099 
  9.   
  10. export SPARK_WORKER_CORES=3     //每個Worker使用的CPU核數 
  11. export SPARK_WORKER_INSTANCES=1   //每個Slave中啟動幾個Worker實例 
  12. export SPARK_WORKER_MEMORY=10G    //每個Worker使用多大的內存 
  13. export SPARK_WORKER_WEBUI_PORT=8081 //Worker的WebUI端口號 
  14. export SPARK_EXECUTOR_CORES=1       //每個Executor使用使用的核數 
  15. export SPARK_EXECUTOR_MEMORY=1G     //每個Executor使用的內存 
  16.  
  17. export HIVE_HOME=/home/hadoop/hive 
  18. export SPARK_CLASSPATH=$HIVE_HOME/lib/mysql-connector-java-5.1.31-bin.jar:$SPARK_CLASSPATH 
  19. export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$HADOOP_HOME/lib/native 

1.2 配置slaves

  1. cp slaves.template slaves 
  2. vi slaves 添加以下內容:localhost 

1.3 啟動master和slave

  1. cd $SPARK_HOME/sbin/ 
  2. ./start-master.sh 
  3.  
  4. 啟動日志位于 $SPARK_HOME/logs/目錄,訪問 http://localhost:8099,即可看到Spark的WebUI界面 
  5.  
  6. 執行 ./bin/spark-shell,打開Scala到Spark的連接窗口    

2.SparkSQL與Hive的整合

  1. 拷貝$HIVE_HOME/conf/hive-site.xml和hive-log4j.properties到 $SPARK_HOME/conf/  
  2. 在$SPARK_HOME/conf/目錄中,修改spark-env.sh,添加  
  3. export HIVE_HOME=/home/hadoop/hive 
  4. export SPARK_CLASSPATH=$HIVE_HOME/lib/mysql-connector-java-5.1.31-bin.jar:$SPARK_CLASSPATH 
  5. 另外也可以設置一下Spark的log4j配置文件,使得屏幕中不打印額外的INFO信息(如果不想受干擾可設置為更高):  
  6. log4j.rootCategory=WARN, console  
  7. 進入$SPARK_HOME/bin,執行 ./spark-sql –master spark://127.0.0.1:7077 進入spark-sql CLI: 
  8. [hadoop@hadoop spark]$ bin/spark-sql --help   
  9. Usage: ./bin/spark-sql [options] [cli option]   
  10. CLI options:   
  11.  -d,--define <keykey=value>          Variable subsitution to apply to hive   
  12.                                   commands. e.g. -d A=B or --define A=B   
  13.     --database <databasename>     Specify the database to use   
  14.  -e <quoted-query-string>         SQL from command line   
  15.  -f <filename>                    SQL from files   
  16.  -h <hostname>                    connecting to Hive Server on remote host   
  17.     --hiveconf <propertyproperty=value>   Use value for given property   
  18.     --hivevar <keykey=value>         Variable subsitution to apply to hive   
  19.                                   commands. e.g. --hivevar A=B   
  20.  -i <filename>                    Initialization SQL file   
  21.  -p <port>                        connecting to Hive Server on port number   
  22.  -S,--silent                      Silent mode in interactive shell   
  23.  -v,--verbose                     Verbose mode (echo executed SQL to the   
  24.                                   console)   

需要注意的是CLI不是使用JDBC連接,所以不能連接到ThriftServer;但可以配置conf/hive-site.xml連接到hive的metastore,然后對hive數據進行查詢。下面我們接著說如何在python中連接hive數據表查詢。

3.配置pyspark和示例代碼

3.1 配置pyspark

  1. 打開/etc/profile: 
  2.         #PythonPath 將Spark中的pySpark模塊增加的Python環境中 
  3.          export PYTHONPATH=/opt/spark-hadoop/python 
  4.         source /etc/profile   

執行./bin/pyspark ,打開Python到Spark的連接窗口,確認沒有報錯。

打開命令行窗口,輸入python,Python版本為2.7.6,如圖所示,注意Spark暫時不支持Python3。輸入import pyspark不報錯,證明開發前工作已經完成。

3.2 啟動ThriftServer

啟動ThriftServer,使之運行在spark集群中:

sbin/start-thriftserver.sh --master spark://localhost:7077 --executor-memory 5g

ThriftServer可以連接多個JDBC/ODBC客戶端,并相互之間可以共享數據。

3.3 請求示例

查看spark官方文檔說明,spark1.4和2.0對于sparksql調用hive數據的API變化并不大。都是用sparkContext 。

  1. from pyspark import SparkConf, SparkContext 
  2. from pyspark.sql import HiveContext 
  3.  
  4. conf = (SparkConf() 
  5.          .setMaster("spark://127.0.0.1:7077"
  6.          .setAppName("My app"
  7.          .set("spark.executor.memory""1g")) 
  8. sc = SparkContext(conf = conf) 
  9. sqlContext = HiveContext(sc) 
  10. my_dataframe = sqlContext.sql("Select count(1) from logs.fmnews_dim_where"
  11. my_dataframe.show() 

返回結果:

運行以后在webUI界面看到job運行詳情。

4.性能比較

截取了接近一個月的用戶行為數據,數據大小為2G,總共接近1600w條記錄。

為了測試不同sql需求情況下的結果,我們選取了日常運行的2類sql:

1.統計數據條數:

  1. select count(1) from fmnews_user_log2; 

2.統計用戶行為:

  1. SELECT device_id, min_time FROM 
  2.         (SELECT device_id,min(import_time) min_time FROM fmnews_user_log2 
  3.             GROUP BY device_id)a 
  4.         WHERE from_unixtime(int(substr(min_time,0,10)),'yyyy-MM-dd') = '2017-03-02'

3. 用戶行為分析:

  1. select case when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '06:00' and '07:59' then 1 
  2.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '08:00' and '09:59' then 2 
  3.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '10:00' and '11:59' then 3 
  4.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '12:00' and '13:59' then 4 
  5.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '14:00' and '15:59' then 5 
  6.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '16:00' and '17:59' then 6 
  7.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '18:00' and '19:59' then 7 
  8.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '20:00' and '21:59' then 8 
  9.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '22:00' and '23:59' then 9 
  10.             else 0 end fmnews_time_type, count(distinct device_id) device_count,count(1) click_count 
  11.        from fmcm.fmnews_user_log2 
  12.      where from_unixtime(int(substr(import_time,0,10)),'yyyy-MM-dd') = '2017-03-02' 
  13.     group by case when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '06:00' and '07:59' then 1 
  14.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '08:00' and '09:59' then 2 
  15.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '10:00' and '11:59' then 3 
  16.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '12:00' and '13:59' then 4 
  17.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '14:00' and '15:59' then 5 
  18.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '16:00' and '17:59' then 6 
  19.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '18:00' and '19:59' then 7 
  20.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '20:00' and '21:59' then 8 
  21.             when from_unixtime(int(substr(fmnews_time,0,10)),'HH:mm'between '22:00' and '23:59' then 9 
  22.             else 0 end

第一條sql的執行結果對比:hive 35.013 seconds

第一條sql的執行結果對比:sparksql 1.218 seconds

第二條sql的執行結果對比:hive 78.101 seconds

第二條sql的執行結果對比:sparksql 8.669 seconds

第三條sql的執行結果對比:hive 101.228 seconds

第三條sql的執行結果對比:sparksql 14.221 seconds

可以看到,雖然沒有官網吹破天的100倍性能提升,但是根據sql的復雜度來看10~30倍的效率還是可以達到的。

不過這里要注意到2個影響因子:

1. 我們數據集并沒有采取全量,在數據量達到TB級別兩者的差距應該會有所減小。同時sql也沒有針對hive做優化。

2. spark暫時是單機(內存足夠)并沒有搭建集群,hive使用的hadoop集群有4臺datanode。

責任編輯:武曉燕 來源: oschina博客
相關推薦

2016-05-09 10:16:14

MapReduce數據分析明星微博

2010-05-27 18:30:56

MySQL 命令行導入

2010-07-22 16:21:33

SQL Server使

2025-11-03 07:47:12

2013-07-04 11:14:44

2015-11-28 10:15:36

WOT2015大數據互聯網+

2021-02-09 09:51:58

異步傳遞數據

2023-11-30 11:45:07

大數據ODPS

2017-11-22 09:20:41

數據庫在線數據遷移Subscriptio

2025-10-31 07:37:48

2023-07-10 18:48:29

PySpark數據結構

2013-04-23 14:36:54

2023-01-31 08:34:19

2010-04-16 15:24:00

Oracle數據

2014-08-20 09:40:56

大數據實踐項目

2013-10-18 15:49:15

微軟大數據微軟

2015-05-05 09:50:45

大數據實現塊數據

2021-02-26 05:21:56

MySQL數據設計

2022-11-17 11:52:35

pandasPySpark大數據

2009-03-10 08:54:19

RMANEXP、IMP數據轉移
點贊
收藏

51CTO技術棧公眾號

精品国产视频| 制服丝袜av成人在线看| 久蕉依人在线视频| 精品播放一区二区| 网站一区二区| 69堂成人精品视频免费| √8天堂资源地址中文在线| 久久久久免费视频| 中文字幕网站视频在线| 欧美日韩小视频| 日韩成人久久| 日韩国产一区久久| 亚洲欧美另类久久久精品| 波多野结衣在线播放| 国产高清日韩| 亚洲伊人成综合成人网| 高清国产一区二区三区| 国产女主播在线直播| 不卡av电影院| 日韩av不卡一区二区| 美女被人操视频在线观看| 一区二区国产精品视频| 亚洲黄色高清| 一个人看的www一区| 久久视频在线看| 一区二区毛片| 最全影音av资源中文字幕在线| 日韩一区二区三区xxxx| 国产亚洲精品v| 中文字幕视频在线| 欧美精品久久久久a| 狠狠网亚洲精品| 国产原创精品视频| 成人美女免费网站视频| 国产三级精品视频| 黄色日韩网站| 精品少妇人妻av一区二区| 欧美亚洲综合在线| 青青草综合网| 超碰成人福利网| xxx一区二区| 国产一区二区剧情av在线| 中文字幕免费高清电视剧网站在线观看 | 国产综合一区二区| 免费黄色电影在线观看| 97在线资源站| 福利视频导航一区| 成人一区二区| 桃乃木香奈av在线| 国产精品欧美日韩| 一级特黄大欧美久久久| 婷婷精品在线观看| 国产色a在线观看| 国产精品高精视频免费| 亚洲视频精选在线| 欧美激情99| 亚州精品一二三区| 欧美日韩第一视频| 国产精品污www在线观看| 国产精品一区三区在线观看| 国产免费成人在线| 免费不卡在线观看av| 国产亚洲欧洲一区高清在线观看| 久久精品国产福利| 日韩视频第二页| 国模私拍一区二区三区| 中文字幕视频一区二区三区久| 日韩精品成人| 天天影视色香欲综合网天天录日日录| 免费不卡在线观看av| 久久婷婷色综合| 欧美a大片欧美片| 免费在线观看麻豆视频| 91香蕉嫩草影院入口| 欧美日韩一区国产| 免费日本视频一区| av亚洲一区二区三区| 日韩免费毛片视频| 国产91久久婷婷一区二区| 欧美性猛交99久久久久99按摩| 在线视频观看日韩| 久久r热视频| 性欧美1819| 91在线|亚洲| 日韩欧美一级二级三级久久久| 久久99久久99小草精品免视看| 精品免费av在线| 国产乱xxⅹxx国语对白| 91亚洲国产精品| 亚洲福利视频网站| 久久婷婷国产综合精品青草| 国产精品探花在线观看| 日韩二区三区| 中文字幕人成一区| 九色精品免费永久在线| 亚洲国产视频直播| 日本aⅴ亚洲精品中文乱码| 日本免费一区二区三区等视频| 国产毛片毛片| 欧美日产一区二区三区在线观看| 亚洲色图17p| 亚洲综合一二区| 日本不卡123| 噜噜噜天天躁狠狠躁夜夜精品 | 欧洲视频一区| 好吊日视频在线观看| 久久这里只有精品23| 国产精品igao视频| 日韩免费观看高清完整版| 久久婷婷成人综合色| 五月天久久久| 欧美日韩123区| 亚洲美女主播视频免费观看| 欧洲亚洲一区| 久久理论片午夜琪琪电影网| 在线中文字幕一区二区| 高清不卡一区二区在线| 日韩免费av| 成人精品电影在线| 欧美日韩在线中文字幕| 高清无码一区二区在线观看吞精| 国产精品mp4| 亚洲图片欧美午夜| 一本大道av伊人久久综合| 成a人片国产精品| 亚洲另类黄色| 日韩高清在线免费观看| 青青草原国产在线| 国产一级电影网| 国产黄色激情视频| av一本久道久久波多野结衣| 久久久国产在线视频| 在线视频综合导航| 中文字幕成人av| 久久er精品视频| 中文字幕一区二区三区在线视频| 99久久精品一区二区成人| 久草视频视频在线播放| 91免费视频网站在线观看| 久久人人爽爽人人爽人人片av| 欧美激情第99页| 亚洲国产精彩中文乱码av| 午夜精品成人在线| 国产调教视频一区| 国产精品一区二区久久精品爱涩| 欧美午夜精品| 曰本一区二区三区视频| av免费在线一区| 精品黄色免费中文电影在线播放| 超级碰碰视频| 国产高清不卡无码视频| 国产成人亚洲欧美| 日本高清不卡的在线| 色偷偷av一区二区三区| 日韩情涩欧美日韩视频| 欧美日韩国产在线播放| 国产精品久久三| www精品美女久久久tv| 久久99精品久久久久久动态图| 欧美伊人久久| 欧美在线观看视频一区| 精品国产一区二区三区成人影院| 第四色男人最爱上成人网| 色在线视频网| 888av在线| 亚洲第一视频| 国产在线传媒| 国产精品区在线| 波多野结衣家庭教师视频| 一区二区不卡在线观看| 欧美成熟毛茸茸复古| 国产chinese精品一区二区| 国产成人综合亚洲| 国内精品视频在线| 久久深夜福利免费观看| 这里只有精品视频| 国产小视频国产精品| 精品亚洲va在线va天堂资源站| 精品久久久久久久久久久院品网| 欧美视频在线观看一区二区| 欧美日韩中文字幕在线视频| 亚洲一区二区三区四区中文字幕| 国产精品久久久久久久久久久免费看 | 亚洲一区二区三区在线看| 国产午夜精品福利| av网站免费线看精品| av网站一区二区三区| 不卡的电视剧免费网站有什么| 国产一区不卡在线| 国产成人亚洲精品青草天美| 国精产品一区一区三区mba视频| 免费高清在线视频一区·| 日本aⅴ免费视频一区二区三区| 久久精品九九| 视频精品一区二区| 久久成人免费日本黄色| 极品销魂美女一区二区三区| 国产乱国产乱300精品| 成人精品高清在线| 国产日韩影视精品|