Hadoop - 實時查詢Drill

https://github.com/smartloli/apache-drill-cn

1.概述

在《Hadoop - 實時查詢Drill》一文當(dāng)中盯桦,筆者給大家介紹如何去處理實時查詢這樣的業(yè)務(wù)場景夸政,也是簡略的提了一下如何去實時查詢HDFS缎玫,然起相關(guān)細節(jié)并未說明入客。今天給大家細說一下相關(guān)細節(jié)拇泛,其中包含:HDFS兴使,Hive以及HBase等內(nèi)容。

2.數(shù)據(jù)源和文件格式

  在使用Drill去做實時查詢,由于其只是一個中間件霎冯,其適配的存儲介質(zhì)是有限制的铃拇,目前官方支持以下存儲介質(zhì):

FS

HDFS

HBase

Hive

RDBMS

MongoDB

MapR-DB

S3

  這里筆者主要給大家介紹HDFS,Hive沈撞,HBase這三種介質(zhì)慷荔。另外,Drill支持以下輸入格式的數(shù)據(jù)源:

Avro

CSV

TSV

PSV

Parquet

MapR-DB*

Hadoop Sequence Files

2.1 文本類型文件(CSV缠俺,TSV显晶,PSV)

  下面筆者給大家介紹文本類型的相關(guān)細節(jié),文本類型的使用晋修,有其固定的使用方法吧碾,通用配置如下:

"formats": {

? ? "csv": {

? ? ? "type":"text",

? ? ? "extensions": [

? ? ? ? "txt"? ? ? ],

? ? ? "delimiter":"\t"? ? },

? ? "tsv": {

? ? ? "type":"text",

? ? ? "extensions": [

? ? ? ? "tsv"? ? ? ],

? ? ? "delimiter":"\t"? ? },

? ? "parquet": {

? ? ? "type":"parquet"? ? }}

  這里以CSV為例子來說明:

"csv":表示固定的文本格式

"type":制定文件的類型凰盔,這里指定為文本類型

"extensions":擴展名為csv

"delimiter":文本內(nèi)容墓卦,每行的分隔符為一個tab占位符

  上面的配置,這里我們也可以進行拓展户敬,比如我們的HDFS上的文件格式如下圖所示:

  我們要達到以下查詢結(jié)果落剪,內(nèi)容如下所示:

0: jdbc:drill:zk=local> SELECT * FROM hdfs.`/tmp/csv_with_header.csv2`;+------------------------+|? ? ? ? columns? ? ? ? |+------------------------+| ["hello","1","2","3"]? || ["hello","1","2","3"]? || ["hello","1","2","3"]? || ["hello","1","2","3"]? || ["hello","1","2","3"]? || ["hello","1","2","3"]? || ["hello","1","2","3"]? |+------------------------+

  那么,我們可以對其做以下配置尿庐,內(nèi)容如下所示:

"csv": {

? "type":"text",

? "extensions": [

? ? "csv2"? ],

? "skipFirstLine":true,

? "delimiter":","},

  這里skipFirstLine這個屬性表示忽略一行結(jié)果忠怖。

  另外,同樣用到上面的數(shù)據(jù)源抄瑟,我們要實現(xiàn)以下查詢結(jié)果凡泣,內(nèi)容如下所示:

0: jdbc:drill:zk=local> SELECT * FROM hdfs.`/tmp/csv_with_header.csv2`;+-------+------+------+------+| name? | num1 | num2 | num3 |+-------+------+------+------+| hello |1|2|3|| hello |1|2|3|| hello |1|2|3|| hello |1|2|3|| hello |1|2|3|| hello |1|2|3|| hello |1|2|3|+-------+------+------+------+

  這該如何去修改CSV的屬性,我們添加以下內(nèi)容即可:

"csv": {

? "type":"text",

? "extensions": [

? ? "csv2"? ],

? "skipFirstLine":false,

? "extractHeader":true,

? "delimiter":","},

  從單詞的意義上可以很直接的讀懂屬性所要表達的意思皮假,這里就不多做贅述了鞋拟。由于篇幅問題,這里就不一一列舉了惹资。

  其他格式文件與此類似贺纲,填寫指定文件格式,文件類型褪测,擴展名猴誊,文本分隔符即可,其他擴展屬性可按需添加侮措。

3.Plugins

3.1 HDFS

  集成HDFS的Plugins懈叹,添加內(nèi)容如下所示:

{

? "type":"file",

? "enabled":true,

? "connection":"hdfs://hdfs.company.com:9000/",

? "workspaces": {

? ? "root": {

? ? ? "location":"/opt/drill",

? ? ? "writable":true,

? ? ? "defaultInputFormat":null? ? }

? },

? "formats": {

? ? "csv": {

? ? ? "type":"text",

? ? ? "extensions": [

? ? ? ? "txt"? ? ? ],

? ? ? "delimiter":"\t"? ? },

? ? "tsv": {

? ? ? "type":"text",

? ? ? "extensions": [

? ? ? ? "tsv"? ? ? ],

? ? ? "delimiter":"\t"? ? },

? ? "parquet": {

? ? ? "type":"parquet"? ? }

? }

}

  PS:連接HDFS地址注意要正確。

3.2 Hive

  集成Hive的Plugins分扎,添加內(nèi)容如下所示:

{

? "type":"hive",

? "enabled":true,

? "configProps": {

? ? "hive.metastore.uris":"thrift://hdfs.company.com:9083",

? ? "fs.default.name":"hdfs://hdfs.company.com/",

? ? "hive.metastore.sasl.enabled":"false"? }

}

  PS:這里需要指定Hive的metastore的thrift地址澄成,同時也需要指定hdfs的地址。另外,我們需要啟動metastore的thrift服務(wù)环揽,命令如下所示:

hive --service metastore

?  這里需要注意的是略荡,Drill當(dāng)前不支持寫操作到Hive表,在將Hive表結(jié)構(gòu)中的數(shù)據(jù)類型做查詢映射時歉胶,支持以下類型:

支持的SQL類型Hive類型

BIGINTBIGINT

BOOLEANBOOLEAN

VARCHARCHAR

DATEDATE

DECIMAL*DECIMAL

FLOATFLOAT

DOUBLEDOUBLE

INTEGERINT,TINYINT,SMALLINT

INTERVALN/A

TIMEN/A

N/ATIMESPAMP  (unix的系統(tǒng)時間)

TIMESPAMPTIMESPAMP  (JDBC時間格式:yyyy-mm-dd hh:mm:ss)

NoneSTRING

VARCHARVARCHAR

VARBINARYBINARY

  另外汛兜,在Drill中,不支持以下Hive類型:

LIST

MAP

STRUCT

TIMESTAMP(Unix Epoch format)

UNION

3.3 HBase

  集成HBase的Plugins通今,添加內(nèi)容如下所示:

{

? "type":"hbase",

? "config": {

? ? "hbase.zookeeper.quorum":"hbase-zk01,hbase-zk02,hbase-zk03",

? ? "hbase.zookeeper.property.clientPort":"2181"? },

? "size.calculator.enabled":false,

? "enabled":true}

  PS:在使用ZooKeeper集群連接信息時粥谬,需要注意的是,Drill在解析HBase的Plugins時辫塌,會解析其HBase集群上的ZK集群信息漏策,如:在HBase集群中的ZK信息配置使用的時域名,這里在配置其HBase的Plugins的ZK連接信息也需使用對應(yīng)的域名臼氨,若是直接填寫IP掺喻,解析會失敗。保證解析的一致性储矩。

4.總結(jié)

  另外感耙,在使用JDBC或ODBC去操作Drill的時候,連接信息的使用是需要注意的持隧,直接按照官方給出的連接方式硬套是有問題的即硼,這里我們修改以下連接信息。連接分2種情況屡拨,一種指定其Drill的IP和PORT只酥,第二種,使用ZK的連接方式呀狼,如jdbc:drill:zk=dn1,dn2,dn3:2181即可裂允。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市赠潦,隨后出現(xiàn)的幾起案子叫胖,更是在濱河造成了極大的恐慌,老刑警劉巖她奥,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓮增,死亡現(xiàn)場離奇詭異,居然都是意外死亡哩俭,警方通過查閱死者的電腦和手機绷跑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凡资,“玉大人砸捏,你說我怎么就攤上這事谬运。” “怎么了垦藏?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵梆暖,是天一觀的道長。 經(jīng)常有香客問我掂骏,道長轰驳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任弟灼,我火速辦了婚禮级解,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘田绑。我一直安慰自己勤哗,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布掩驱。 她就那樣靜靜地躺著芒划,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昙篙。 梳的紋絲不亂的頭發(fā)上腊状,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天诱咏,我揣著相機與錄音苔可,去河邊找鬼。 笑死袋狞,一個胖子當(dāng)著我的面吹牛焚辅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苟鸯,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼同蜻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了早处?” 一聲冷哼從身側(cè)響起湾蔓,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎砌梆,沒想到半個月后默责,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡咸包,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年桃序,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烂瘫。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡媒熊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芦鳍,我是刑警寧澤嚷往,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站柠衅,受9級特大地震影響间影,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜茄茁,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一魂贬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧裙顽,春花似錦付燥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至漩怎,卻和暖如春勋颖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勋锤。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工饭玲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人叁执。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓茄厘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谈宛。 傳聞我的和親對象是個殘疾皇子次哈,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    Joyyx閱讀 8,327評論 0 16
  • Zookeeper用于集群主備切換。 YARN讓集群具備更好的擴展性吆录。 Spark沒有存儲能力窑滞。 Spark的Ma...
    Yobhel閱讀 7,267評論 0 34
  • Impala是Cloudera公司主導(dǎo)開發(fā)的新型查詢系統(tǒng),它提供SQL語義恢筝,能查詢存儲在Hadoop的HDFS和H...
    時待吾閱讀 2,473評論 0 8
  • 說明:不少讀者反饋哀卫,想使用開源組件搭建Hadoop平臺,然后再部署Kylin滋恬,但是遇到各種問題聊训。這里我為讀者部署一...
    大詩兄_zl閱讀 2,070評論 0 2
  • 在我廣闊的人生中, 一切都是完美恢氯、完整和完全的带斑。 我相信有一種比我強大得多的力量鼓寺, 每天、每時勋磕、每刻從我身體流過妈候。...
    Janeliqin閱讀 81評論 0 0