flink寫入HDFS中文亂碼

2021-10-04 09:46:04 字數 1438 閱讀 2676

客戶端埋點日誌進行解析時需要獲取地區編碼和名稱,程式是通過flink分布式快取將地區編碼和名稱資料傳到每個task節點進行讀取。本地測試時沒有問題,但是部署到集群資料寫入hdfs後發現中文亂碼,部分**如下:

//設定分布式快取檔案位址

streamexecutionenvironment bsenv = streamexecutionenvironment.getexecutionenvironment();

bsenv.registercachedfile("path", "stationinfo");

//讀取快取檔案資料

file myfile = getruntimecontext().getdistributedcache().getfile("stationinfo");

listlines = fileutils.readlines(myfile);

for (string line : lines)

//最後將資料輸出到hdfs

datetimebucketassigner assigner = new datetimebucketassigner<>("'ptdate='yyyy-mm-dd-hh ");

final streamingfilesinksink = streamingfilesink

.forrowformat(new path(outputpath), new ******stringencoder("utf-8"))

.withrollingpolicy(

defaultrollingpolicy.builder()

.withrolloverinterval(timeunit.minutes.tomillis(15))

.withinactivityinterval(timeunit.minutes.tomillis(5))

.withmaxpartsize(1024 * 1024 * 1024)

.build()).withbucketassigner(assigner)

.build();

因為sink已經指定編碼為udf-8所以確定不是sink輸出的問題,可能時資料讀取的時候就亂碼了,最後發現在分布式快取檔案讀取的時候沒有指定編碼格式,**中種新增utf-8的引數問題解決

//指定讀取編碼格式為utf-8

hibernate mysql寫入中文亂碼 解決

啟動hibernate專案,自動建立表,插入資料之後發現寫入表裡的資料裡的中文是亂碼。按如下方法解決了 修改資料庫的字符集為utf 8,這個可以通過mysql的客戶端軟體裡右鍵要修改的資料庫的屬性更改。修改client預設字符集為utf8。windows下在mysql安裝目錄 我的計算機作業系統是w...

mysql寫入中文亂碼

亂碼可謂是程式猿的常見問題了,下面就大致介紹幾種常見的情況。常見於頁面 前台到後台傳值 寫入到資料庫這三個方面。頁面相對是最為容易解決的,往往是在相應的jsp頁面或者html頁面設定相關的字符集即可。如 在傳值過程中,也是亂碼出現的頻繁地。先不說到底是什麼場景了,通常常用的方案有如下幾個 配置指定的...

hibernate mysql寫入中文亂碼

啟動hibernate專案,自動建立表,插入資料之後發現寫入表裡的資料裡的中文是亂碼。按如下方法解決了 修改資料庫的字符集為utf 8,這個可以通過mysql的客戶端軟體裡右鍵要修改的資料庫的屬性更改。或者在命令列裡面建立資料庫的時候指定字符集。修改client預設字符集為utf8。windows下...