HDFS日誌json轉存成parquet方案

2021-08-10 00:14:01 字數 1275 閱讀 2595

**

收集的業務資料為json格式,準備利用parquet 格式重新儲存到hive表,以節約空間並方便後續通過spark 或 hive 進行分析查詢。

(示例**是用python)

具體步驟是:

1.用spark讀取json資料後,得到乙個dataframe

path = '/xx/***/***.json'

df = sqlcontext.read.json(path)

2.dataframe 經過filter 、select 等操作再以parquet格式寫入hdfs指定路徑

df = df.filter(『***』).select(『***』)

3.目錄是按天分割槽,類似 /parquet/******/dt=2017-06-06 這樣

df.write.parquet(「/parquet/******/dt=2017-06-06」,」overwrite」)

4.建立對應hive表

create  table ******(

`xx` string,

`***` bigint,

`***xx` string

......

...)

partitioned by (dt string )

stored as parquet

location '/parquet/******';

5.這樣建立完以後,hive還需要執行一步資料載入,才能查到資料

load data  inpath '/parquet/******/dt=2017-06-06'

into

table ****** partition(dt='2017-06-06')

或者alter

table ****** add partition(dt='2017-06-06') location '/parquet/******/dt=2017-06-06';

load 和 alter 的主要區別是:

load 會建立分割槽目錄,並移動資料到分割槽下,alter 的方式不會建立分割槽目錄,也不會移動資料。

個人場景alter 方式新增分割槽更適合。

logrotate 日誌輪詢(轉存)

1 建立 etc logrotate.d nginx檔案 1 vim etc logrotate.d nginx 2 寫入如下內容 var log nginx log 注釋 var log nginx log 需要輪詢 存 日誌路徑 daily weekly 每天 每週 輪詢 存 rotate 10...

logrotate 日誌輪詢(轉存)

1 建立 etc logrotate.d nginx檔案 1 vim etc logrotate.d nginx 2 寫入如下內容 var log nginx log 注釋 var log nginx log 需要輪詢 存 日誌路徑 daily weekly 每天 每週 輪詢 存 rotate 10...

轉存Druid監控記錄到日誌檔案

druid的監控記錄在是快取的,重啟之後無法找回,所以需要做持久化,定期把監控記錄轉存到日誌檔案中,實現步驟如下 1 datasource中增加配置 property name timebetweenlogstatsmillis value 600000 property name statlogg...