最近流行のため、ついに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の何かをしようとします