參考資料最近做專案寫了個導數的指令碼,其實就是在乙個集群的資料拉取下來到另外乙個集群上並且建表(機器不通只能先這麼幹),然後將表中的資料用spark坐下整理放到整理目錄下。
但是在建表的時候發生了些問題。
我的初衷是將建表語句在指令碼中用如下表示
sql=
"create table *** (
*** string
)row foramte delilimited
..."
這種形式,然後使用echo將變數輸出重定向到當前目錄的乙個sql檔案然後使用 hive -f 檔案路徑來建表
發現報錯如下
(\n 『transient_lastddltime』 = 『1598093488』\n)\n』: command not found注意: sql中不能有反引號,不然會被linux 識別成命令。
反引號的定義:反引號在linux shell命令列中有特殊的含義:反引號間的內容,會被shell先執行。其輸出被放入主命令後,主命令再被執行。
echo不適合做多行文字以及長文字的輸出 涉及到多行文字(也支援變數替換)的情況 我們使用cat/eof更合適
具體形式(自己寫的demo)
cat >> create_table.sh << eof
create table vbapfe4203ca074dad4e05551d39_parquet(column_0 bigint, column_1 string, column_2 bigint, column_3 bigint, column_4 string, column_5 string, column_6 string, column_7 bigint, column_8 bigint, column_9 bigint, column_10 bigint, column_11 bigint)
row format serde 'org.apache.hadoop.hive.ql.io.parquet.serde.parquethiveserde'
with serdeproperties (
'serialization.format' = '1'
)stored as
inputformat 'org.apache.hadoop.hive.ql.io.parquet.mapredparquetinputformat'
outputformat 'org.apache.hadoop.hive.ql.io.parquet.mapredparquetoutputformat'
tblproperties (
'transient_lastddltime' = '1598093488'
)eof
這樣就可以吧多行的文字輸出到當前目錄的create_table.sh中了。
這裡注意
1、eof是「end of file」,表示文字結束符。 eof只是標識,不是固定的 (換成別的字元是一樣的)
2、cat >> create_table.sh << eof 是表示將輸出疊加到create_table.sh
cat > create_table.sh << eof 是表示將輸出覆蓋到create_table.sh
使用DrawTextEx繪製多行文字
使用gidplus進行文字繪製時,大家經常需要把多行文字繪製在乙個矩形框中,通常採用的繪製介面是drawtext和drawtextex。這個兩個函式確實可以實現矩形框中的多行繪製,但是,它們都沒有辦法在一次繪製中定製文字行距。為了實現文字多行繪製的同時,可以定製行距,可以採用drawtextex方法...
多行文字 單行文字的垂直居中
在說到這個問題的時候,也許有人會問css中不是有vertical align屬性來設定垂直居中的嗎?即使是某些瀏覽器不支援我只需做少許的css hack技術就可以啊!所以在這裡我還要囉嗦兩句,css中的確是有vertical align屬性,但是它只對 x html元素中擁有valign特性的元素才...
多行文字的垂直居中
與其他一些display屬性類似,table cell同樣會被其他一些css屬性破壞,例如float,position absolute,所以,在使用display table cell與float left或是position absolute屬性盡量不用同用。設定了display table c...