sparkcli命令spark sql的使用

2021-07-23 01:20:05 字數 1903 閱讀 4072

spark的定位是是替換掉hive和storm,企業裡面hive百分之八十的命令都是通過hive-cli命令來調的,sparksql的作用等同於hive-cli。hive-cli是跑在mapreduce,sparksql是執行在spark上,通過sparksql --help可以看cli,比如指定記憶體,核數,以及執行cli的命令,他是完全仿造hive的。

比如在hive上執行:hive -e "select * from daily_visit",同樣在spark中可以直接執行spark-sql -e "select * from daily_visit",這兩個都可以執行hive的語句,如果我們想指定一些資源的話,可以這樣寫,spark-sql -e "select * from daily_visit" --master yarn --driver-cores 2 --driver-memory 1g或者spark-sql -f aa.sql --master yarn --driver-cores 2 --driver-memory 1g對應hive -f也是一樣的。

然而必須能傳引數,比如時間,才能推廣使用,但是-f不支援,比如說spark-sql -f aa.sql 2015-05-08不支援,但是有很多方式進行封裝,讓他支援。-i通常用於初始化hive udf上,initialize hive file。

hive在企業裡面就是寫sql。無論什麼作業,都是用shell指令碼寫。

比如乙個shell指令碼執行:sh rpt_sale_daily.sh 2015-01-01

more rpt_sale_daily.sh會出現:

#!/bin/sh

if [ $# = "1 " ]: then

date=$1

else

date='date  -d  -1days '+%y-%m-%d'

fiecho $date

cd /opt/cloudy/program/rpt_sale_daily

hivef ./rpt_sale_daily.hql -date $date

if test $? -ne 0

then

exit 11

fihive2mysql ./aa.property -date $date

if test $? -ne 0

then

exit 21

fiecho "123"

需求:開發乙個命令,叫sparkf 比如sparkf ./aa.sql -date $date

valdate = "2015-08-28" 

//通常通過引數傳過來

valsqlstr =

s"""

|insert overwrite into daily_visit partition (date='

$date') //日期,通常是通過引數傳進來的

|select count(distinct guid) uv,sum(pv) pv,

|count(case when pv>=2 then sessionid else null end) second_num,

|count(sessionid) visits from

|(select ds date, sessionid, max(guid) guid, count(url) pv from tracklog and hour='18'

|and length(url) > 0

|group by ds,sessionid) a

|group by date

""".stripmargin

需要有sparkf這樣乙個命令,現在上千個hivef這個命令,我只需要把她們換成sparkf即可。那整個hive的執行就可以都遷移到我們的spark上來了。

Spark(六) Spark計算模型

整個spark框架都是基於rdd運算元來進行計算的。what is rdd?resilient distributed dataset rdd 分布式彈性資料集,是spark上的乙個核心抽象 表示用於平行計算的,不可修改的,對資料集合進行分片的資料結構 簡單地,可以將rdd看成是spark平台上的通...

Spark 學習記錄 Spark 前言

spark是乙個非常強大而活躍的開源社群開源和維護的,他們來自不同的機構,其中很多的人都是我們華人,spark是2009年作為乙個研究專案在加州大學伯克利分校實驗室誕生,實驗室的一些研究人員在做迭代計算的時候發現mr效率極其低下,因而想要一種適合迭代計算的計算框架,spark應用而生。因此spark...

三行命令解決spark詞頻統計

如何通過三行命令解決詞頻統計問題 1 使用textfile載入文字 2 使用flatmap 生成以單詞為鍵,數字1為值的rdd 3 使用reducebykey 對所有單詞進行過統計 原文件如下 命令如下 val input sc.textfile file media hadoop ubuntu w...