FLINK 1.10 SQL読み取りカフカ

最近流行のため、ついにSQLのFLINKを続け見え始め、長い時間のために怠惰な良いを盗みました 

----------------

コンピュータ上のFLINK項目はすでに1.10にアップグレードし、また最近では週末を利用して新しい文書が、SQLのAPI(ピット上のステップ)の新しいバージョンを体験するためにどのようなネットワークを教えてください。

直接以前からSQLサンプルFLINKクラウド邪悪なギャング開始(ポンポンが先に仕上げ良いを持っています)。

単純なものからリコールは、カフカは、PVやUV、およびMySQLへの出力を求めて、パケットの時間に応じて、ユーザの行動から受信されます。

依存性を追加することを見てください:

    <依存性> 
    <のgroupId> org.apache.flink </のgroupId> 
    <たartifactId> FLINKテーブル</たartifactId> 
    <バージョン> $ {flink.version} </バージョン> 
    <タイプ> POM </ type>の
</依存> 
<依存性> 
    <のgroupId> org.apache.flink </のgroupId> 
    <たartifactId> FLINKテーブル-API-Javaにbridge_2.11 </たartifactId> 
    <バージョン> $ {flink.version} </バージョン> 
</依存> 
<! -や... - > 
<依存> 
    <groupIdを> org.apache.flink </ groupIdを> 
    <たartifactId> FLINKテーブル-API-Scalaの-bridge_2.11 </たartifactId> 
    <バージョン> $ {FLINK .version} </バージョン>
</依存関係> 
<依存> 
    <groupIdを> org.apache.flink </ groupIdを>
    <たartifactId> FLINKテーブル共通</たartifactId> 
</依存>
    <バージョン> $ {flink.version} </バージョン> 
</依存> 
<依存性> 
    <のgroupId> org.apache.flink </のgroupId> 
    <たartifactId> FLINKテーブル-API-のJava </たartifactId> 
    <バージョン> $ {flink.version} </バージョン> 
</依存> 
<依存性> 
    <のgroupId> org.apache.flink </のgroupId> 
    <たartifactId> FLINKテーブル-API-スカラ_ $ {scala.binary.version} </たartifactId> 
    <バージョン> $ {flink.version} </バージョン> 
</依存> 
<依存性> 
    <のgroupId> org.apache.flink </のgroupId> 
    <たartifactId> FLINK・テーブルプランナー-blink_2.11 </たartifactId> 
    <バージョン> $ {FLINK。バージョン} </バージョン> 
<依存性> 
    <のgroupId> org.apache.flink </のgroupId>
    <たartifactId> FLINK・テーブルplanner_2.11 </たartifactId> 
    <バージョン> $ {flink.version} </バージョン> 
</依存> 
<依存性> 
    <のgroupId> org.apache.flink </のgroupId> 
    <たartifactId> FLINK -jdbc_2.11 </たartifactId> 
    <バージョン> $ {flink.version} </バージョン> 
</依存> 
<依存性> 
    <のgroupId> org.apache.flink </のgroupId> 
    <たartifactId> FLINK-CSV </たartifactId> 
    <バージョン> $ {flink.version} </バージョン> 
</依存>

FLINK-jdbc_2.11-1.10.0.jar:のようなこれらに関連したテーブル、いくつかの新しい依存の注意、

SQLファイルを対応見て:

- sourceTableは
(表USER_LOGをCREATE 
    VARCHAR USER_ID、
    、VARCHARをITEM_ID 
    VARCHAR、CATEGORY_ID 
    挙動VARCHAR、TS TIMESTAMP(3) 
   で(
     'connector.type' = 'カフカ'  'connector.version' = 'ユニバーサル' 「コネクタ。トピック'= 'user_behavior'  'connector.startupモード'= '最古のオフセット'  'connector.properties.0.key'= 'zookeeper.connect'  'connector.properties.0.value'='ベン: 2181'  'connector.properties.1.key' = 'bootstrap.servers' 'connector.properties.1.value' = 'の友達:9092' '更新モード' = 'APPEND'  'format.type' = 'JSON'  'format.deriveスキーマ' = '真' 
); 

- sinkTableは
(表pvuv_sinkをCREATE 
    VARCHAR、DT 
    PV BIGINT、
    UV BIGINT 
)WITH(
     = 'JDBC' 'connector.typeを'  'connector.url' = ':MySQLの:JDBCを//ベン:3306 /ベン' 「コネクタ.table」= 'pvuv_sink'  'connector.username' = 'ルート'  'connector.password' = '123456'  'connector.write.flush.max-列' = '1' 
)。

 '00 YYYY-MM-DD HH' DT)
  COUNT( * PV AS)、
  UV AS COUNT(DISTINCT USER_ID)
USER_LOG FROM 
GROUP BY DATE_FORMAT(TS、 'YYYY-MM-DD HH:00') ;

実行

最初に遭遇する問題点は次のとおりです。「テーブルのフィールド 『TS』のタイプTIMESTAMP(6)TableSourceの戻り値の型の 『TS』フィールドの物理的なタイプTIMESTAMP(3)と一致していません」

(6)デフォルトの外観はTIMESTAMP TIMESTAMPであり、ソースTIMESTAMP( "TS": "2017-11-26T01:00:01Z")は、TSに直接データ型と一致しません:TIMESTAMP(3)、取得。

他のピットが存在しない場合、直接にmyqlへのデータ出力を実行することができます

 

 

 コネクタSQLから始まり、次のkafak、真ん中FLINK 1.10 SQLを見た後、カフカのみ、CSV、JSONとアブロ3種類をサポートしています。(次のJSONとCSVを試してみてください)

読み取りと書き込み、JSON、CSNなど、SQL二つのプログラム、。

直接書き込みkafakに変更テーブルシンクSQL上:

- sinkTableを
(表user_log_sinkをCREATE 
    VARCHAR、dtは
    PV BIGINT、
    UV BIGINT 
WITH()
     'connector.type' = 'カフカ'  'connector.version' = 'ユニバーサル'  'connector.topic' = 'user_behavior_sink' 「コネクタ.properties.zookeeper.connect」= 'ベン:2181'  'connector.properties.bootstrap.servers' = 'ベン:9092' '更新モード' = 'APPEND'、
     'format.type' = 'JSON' ;

しかし、それを実行することはできません。

これは、次のエラーが報告されました:

AppendStreamTableSink表は変更だけ挿入していることが必要です。

WTF、上記の「更新モード」は明確に書かれている「APPEND」 

その後、私はしばらくの間を開始し、操作の何も鳥があります:ネットワークのマニュアルには、設定を変更するSQLものを私に教えてください。

---------------ここで多くの時間を費やし-----------------

最後まで、任意の変換なしで直接の出力元の内容に気まぐれ、、。

- 挿入
INSERT INTOのuser_log_sink(DT、PV、UV)
USER_ID SELECT、ITEM_ID、CATEGORY_ID、行動、TS 
USER_LOG FROM。

シンク部分も変更されます。

- sinkTableは
(表user_log_sinkをCREATE 
    VARCHAR USER_ID、
    、VARCHARをITEM_ID 
    VARCHAR、CATEGORY_ID 
    挙動VARCHAR、
    TS TIMESTAMP( 3 
)で(
     'connector.type' = 'カフカ'  'connector.version' = 'ユニバーサル' 「コネクタ。トピック'= 'user_behavior_sink_1'  'connector.properties.zookeeper.connect'= 'ベン:2181'  'connector.properties.bootstrap.servers'= 'ベン:9092'  '更新モード'= 'APPEND'  ' format.type」= 'JSON' 
);

同様に、よく、。

ねえ、どうして(注:ノウハウを追加するなど)の公式ウェブサイトやその他の文書は、読んで、あなたが知っておくべき

そして、最終的に穴を開始しました。

csvファイルを書くとき、彼は「2.7.9-3.0を」最後のピット、以前のバージョン、「FLINK-影-jackso」私が使用しているに会ったが、CsvSchameありませんでしたので、このエラーがありました:

java.lang.ClassNotFoundException:org.apache.flink.shaded.jackson2.com.fasterxml.jackson.dataformat.csv.CsvSchema $ビルダーによって引き起こされます

FLINK-影-jackso版はのFLINKコードバージョンに置き換え「2.9.8-7.0を」 

基本的には、書き込みJSONカフカコネクタおよびCSVの円滑な完了です。

そして最後に、完全なSQLを貼り付けます。

 'format.type' = 'CSV' 
)。-
    


format.type」= 'CSV' ); -
    

挿入
INSERT INTOのuser_log_sink(DT、PV、UV)
USER_ID SELECT、ITEM_ID、CATEGORY_ID、行動、TS 
USER_LOG FROM。

githubのにアップロードされたファイルSQL関連:  FLINK-rookicを   、また更新のpom.xmlに依存しています。

 

久しぶりの書き込みは、最近、もう一度SQL kafak / mysqlの/ HBaseの/ ES /ファイル/ HDFSおよびその他のコネクタを試し、その後、SQLの何かをしようとします

 

おすすめ

転載: www.cnblogs.com/Springmoon-venn/p/12498883.html