A. DB2時間戳數據導入到Sparksql時,怎樣轉換為SparkSql中的timestamp
Spark SQL是支持在Spark中使用Sql、HiveSql、Scala中的關系型查詢表達式。
它的核心組件是一個新增的RDD類型SchemaRDD,它把行對象用一個Schema來描述行裡面的所有列的數據類型,它就像是關系型資料庫裡面的一張表。
它可以從原有的RDD創建,也可以是Parquet文件
最重要的是它可以支持用HiveQL從hive裡面讀取數據。
B. spark sql中的臨時表怎麼讀取數據
Spark SQL就是shark ,也就是SQL on Spark。如果沒記錯的話,shark的開發利用了hive的API,所以支持讀取HBase。而且Spark的數據類型兼容範圍大於Hadoop,並且包含了Hadoop所支持的任何數據類型。
C. Spark SQL到底支持什麼SQL語句
Spark SQL到底支持什麼SQL語句
scala語言不是很容易懂,但是裡面有解析SQL的方法,可以看出支持的SQL語句,至少關鍵詞是很明確的。
protected val ALL = Keyword("ALL")
protected val AND = Keyword("AND")
protected val APPROXIMATE = Keyword("APPROXIMATE")
protected val AS = Keyword("AS")
protected val ASC = Keyword("ASC")
protected val BETWEEN = Keyword("BETWEEN")
protected val BY = Keyword("BY")
protected val CASE = Keyword("CASE")
protected val CAST = Keyword("CAST")
protected val DESC = Keyword("DESC")
protected val DISTINCT = Keyword("DISTINCT")
D. eclipse怎麼利用spark拆分csv文件
動手實驗Apache Spark的最好方式是使用互動式Shell命令行,Spark目前有Python Shell和Scala Shell兩種互動式命令行。 可以從 這里下載Apache Spark,下載時選擇最近預編譯好的版本以便能夠立即運行shell。 目前最新的Apache Spark版本是1.5.0
E. spark sql支持哪些sql操作
支持Shark和sparkSQL 。
但是,隨著Spark的發展,其中sparkSQL作為Spark生態的一員繼續發展,而不再受限於hive,只是兼容hive;而hive on
spark是一個hive的發展計劃,該計劃將spark作為hive的底層引擎之一,也就是說,hive將不再受限於一個引擎,可以採用map-
rece、Tez、spark等引擎。
F. spark大數據離線分析 爬蟲存到 csv 有的列是長度不固定的list 請問應該怎麼存到 hive
使用case class匹配一下,長度不夠的置空
G. spark中如何讀取csv後得到一個arrary對象
csv1.map(line => line.split(",").map(elem =>{
val sb = new StringBuilder()
for (e <-elem ){
sb.append(e)
sb.append(,)
}
})
H. sparkSQL和spark有什麼區別
Spark為結構化數據處理引入了一個稱為Spark SQL的編程模塊。簡而言之,sparkSQL是Spark的前身,是在Hadoop發展過程中,為了給熟悉RDBMS但又不理解MapRece的技術人員提供快速上手的工具。
sparkSQL提供了一個稱為DataFrame(數據框)的編程抽象,DF的底層仍然是RDD,並且可以充當分布式SQL查詢引擎。
SparkSql有哪些特點呢?
1)引入了新的RDD類型SchemaRDD,可以像傳統資料庫定義表一樣來定義SchemaRDD。
2)在應用程序中可以混合使用不同來源的數據,如可以將來自HiveQL的數據和來自SQL的數據進行Join操作。
3)內嵌了查詢優化框架,在把SQL解析成邏輯執行計劃之後,最後變成RDD的計算。
I. 如何使用 Spark SQL
一、啟動方法
/data/spark-1.4.0-bin-cdh4/bin/spark-sql --master spark://master:7077 --total-executor-cores 10 --executor-memory 1g --executor-cores 2
註:/data/spark-1.4.0-bin-cdh4/為spark的安裝路徑
/data/spark-1.4.0-bin-cdh4/bin/spark-sql –help 查看啟動選項
--master MASTER_URL 指定master url
--executor-memory MEM 每個executor的內存,默認為1G
--total-executor-cores NUM 所有executor的總核數
-e <quoted-query-string> 直接執行查詢SQL
-f <filename> 以文件方式批量執行SQL
二、Spark sql對hive支持的功能
1、查詢語句:SELECT GROUP BY ORDER BY CLUSTER BY SORT BY
2、hive操作運算:
1) 關系運算:= ==, <>, <, >, >=, <=
2) 算術運算:+, -, *, /, %
3) 邏輯運算:AND, &&, OR, ||
4) 復雜的數據結構
5) 數學函數:(sign, ln, cos, etc)
6) 字元串函數:
3、 UDF
4、 UDAF
5、 用戶定義的序列化格式
6、join操作:JOIN {LEFT|RIGHT|FULL} OUTER JOIN LEFT SEMI JOIN CROSS JOIN
7、 unions操作:
8、 子查詢: SELECT col FROM ( SELECT a + b AS col from t1) t2
9、Sampling
10、 Explain
11、 分區表
12、 視圖
13、 hive ddl功能:CREATE TABLE、CREATE TABLE AS SELECT、ALTER TABLE
14、 支持的數據類型:TINYINT SMALLINT INT BIGINT BOOLEAN FLOAT DOUBLE STRING BINARY TIMESTAMPDATE ARRAY MAP STRUCT
三、Spark sql 在客戶端編程方式進行查詢數據
1、啟動spark-shell
./spark-shell --master spark://master:7077 --total-executor-cores 10 --executor-memory 1g --executor-cores 2
2、編寫程序
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val df = sqlContext.read.json("../examples/src/main/resources/people.json")
查看所有數據:df.show()
查看錶結構:df.printSchema()
只看name列:df.select("name").show()
對數據運算:df.select(df("name"), df("age") + 1).show()
過濾數據:df.filter(df("age") > 21).show()
分組統計:df.groupBy("age").count().show()
1、查詢txt數據
import sqlContext.implicits._
case class Person(name: String, age: Int)
val people = sc.textFile("../examples/src/main/resources/people.txt").map(_.split(",")).map(p => Person(p(0), p(1).trim.toInt)).toDF()
people.registerTempTable("people")
val teenagers = sqlContext.sql("SELECT name, age FROM people WHERE age >= 13 AND age <= 19")
2、parquet文件
val df = sqlContext.read.load("../examples/src/main/resources/users.parquet")
3、hdfs文件
val df = sqlContext.read.load("hdfs://namenode.Hadoop:9000/user/hive/warehouse/spark_test.db/test_parquet/part-r-00001.gz.parquet")
4、保存查詢結果數據
val df = sqlContext.read.load("../examples/src/main/resources/users.parquet")
df.select("name", "favorite_color").write.save("namesAndFavColors.parquet「)
四、Spark sql性能調優
緩存數據表:sqlContext.cacheTable("tableName")
取消緩存表:sqlContext.uncacheTable("tableName")
spark.sql.inMemoryColumnarStorage.compressedtrue當設置為true時,Spark SQL將為基於數據統計信息的每列自動選擇一個壓縮演算法。
spark.sql.inMemoryColumnarStorage.batchSize10000柱狀緩存的批數據大小。更大的批數據可以提高內存的利用率以及壓縮效率,但有OOMs的風險
J. 請教一個SparkSQL解析內嵌有json的csv的問題
一個SparkSQL解析內嵌有json的csv的問題
用excel打開,粘貼出來數據是這樣:
uid,uuid,event_type,event_data,created_at
123456,abcdefabcdefabcdef,some-action,"{""ration"": ""20"", ""questionId"": ""123456""}",1476201605
這里的event_data是一個json,使用下面的代碼讀取:
val usereventDF = spark.read.format("csv").option("header", "true").option("inferSchema", "true")
.load("/Users/xxx/Desktop/event.csv")
.createOrReplaceTempView("t_event")
當select *的時候,會發現created_at欄位的輸出被按照前面json當中的逗號識別了:
+-------+--------------------+--------------+--------------------+--------------------+
| uid| uuid| event_type| event_data| created_at|
+-------+--------------------+--------------+--------------------+--------------------+
|123456|abcdefabcdefabcdef...|some-action|"{""ration"": "...| ""questionId"": ...|
即便使用get_json_object,也會發現直接輸出'$'就是個 "{"