久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

  1. <legend id='42AN6'><style id='42AN6'><dir id='42AN6'><q id='42AN6'></q></dir></style></legend>

        <bdo id='42AN6'></bdo><ul id='42AN6'></ul>
    1. <i id='42AN6'><tr id='42AN6'><dt id='42AN6'><q id='42AN6'><span id='42AN6'><b id='42AN6'><form id='42AN6'><ins id='42AN6'></ins><ul id='42AN6'></ul><sub id='42AN6'></sub></form><legend id='42AN6'></legend><bdo id='42AN6'><pre id='42AN6'><center id='42AN6'></center></pre></bdo></b><th id='42AN6'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='42AN6'><tfoot id='42AN6'></tfoot><dl id='42AN6'><fieldset id='42AN6'></fieldset></dl></div>

    2. <small id='42AN6'></small><noframes id='42AN6'>

      <tfoot id='42AN6'></tfoot>

      Google Dataflow (Apache beam) JdbcIO 批量插入 mysql 數據庫

      Google Dataflow (Apache beam) JdbcIO bulk insert into mysql database(Google Dataflow (Apache beam) JdbcIO 批量插入 mysql 數據庫)

      • <tfoot id='dIshH'></tfoot>

        <small id='dIshH'></small><noframes id='dIshH'>

        <legend id='dIshH'><style id='dIshH'><dir id='dIshH'><q id='dIshH'></q></dir></style></legend>

            <tbody id='dIshH'></tbody>

              <bdo id='dIshH'></bdo><ul id='dIshH'></ul>

                <i id='dIshH'><tr id='dIshH'><dt id='dIshH'><q id='dIshH'><span id='dIshH'><b id='dIshH'><form id='dIshH'><ins id='dIshH'></ins><ul id='dIshH'></ul><sub id='dIshH'></sub></form><legend id='dIshH'></legend><bdo id='dIshH'><pre id='dIshH'><center id='dIshH'></center></pre></bdo></b><th id='dIshH'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='dIshH'><tfoot id='dIshH'></tfoot><dl id='dIshH'><fieldset id='dIshH'></fieldset></dl></div>
                本文介紹了Google Dataflow (Apache beam) JdbcIO 批量插入 mysql 數據庫的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                問題描述

                我正在使用 Dataflow SDK 2.X Java API (Apache Beam SDK) 將數據寫入 mysql.我已經基于 Apache Beam SDK 文檔 使用數據流將數據寫入 mysql.它一次插入單行,因為我需要實現批量插入.我在官方文檔中找不到任何啟用批量插入模式的選項.

                I'm using Dataflow SDK 2.X Java API ( Apache Beam SDK) to write data into mysql. I've created pipelines based on Apache Beam SDK documentation to write data into mysql using dataflow. It inserts single row at a time where as I need to implement bulk insert. I do not find any option in official documentation to enable bulk inset mode.

                想知道是否可以在數據流管道中設置批量插入模式?如果是,請讓我知道我需要在下面的代碼中更改什么.

                Wondering, if it's possible to set bulk insert mode in dataflow pipeline? If yes, please let me know what I need to change in below code.

                 .apply(JdbcIO.<KV<Integer, String>>write()
                      .withDataSourceConfiguration(JdbcIO.DataSourceConfiguration.create(
                            "com.mysql.jdbc.Driver", "jdbc:mysql://hostname:3306/mydb")
                          .withUsername("username")
                          .withPassword("password"))
                      .withStatement("insert into Person values(?, ?)")
                      .withPreparedStatementSetter(new JdbcIO.PreparedStatementSetter<KV<Integer, String>>() {
                        public void setParameters(KV<Integer, String> element, PreparedStatement query) {
                          query.setInt(1, kv.getKey());
                          query.setString(2, kv.getValue());
                        }
                      })
                

                推薦答案

                EDIT 2018-01-27:

                事實證明,這個問題與 DirectRunner 有關.如果您使用 DataflowRunner 運行相同的管道,您應該獲得實際上多達 1,000 條記錄的批次.DirectRunner 總是在分組操作后創建大小為 1 的包.

                It turns out that this issue is related to the DirectRunner. If you run the same pipeline using the DataflowRunner, you should get batches that are actually up to 1,000 records. The DirectRunner always creates bundles of size 1 after a grouping operation.

                原答案:

                我在使用 Apache Beam 的 JdbcIO 寫入云數據庫時遇到了同樣的問題.問題是,雖然 JdbcIO 確實支持批量寫入多達 1,000 條記錄,但我從未真正見過它一次寫入超過 1 行(我不得不承認:這總是在開發環境中使用 DirectRunner).

                I've run into the same problem when writing to cloud databases using Apache Beam's JdbcIO. The problem is that while JdbcIO does support writing up to 1,000 records in one batch, in I have never actually seen it write more than 1 row at a time (I have to admit: This was always using the DirectRunner in a development environment).

                因此,我在 JdbcIO 中添加了一個功能,您可以通過將數據分組在一起并將每個組寫為一個批次來自己控制批次的大小.下面是基于 Apache Beam 原始 WordCount 示例的如何使用此功能的示例.

                I have therefore added a feature to JdbcIO where you can control the size of the batches yourself by grouping your data together and writing each group as one batch. Below is an example of how to use this feature based on the original WordCount example of Apache Beam.

                p.apply("ReadLines", TextIO.read().from(options.getInputFile()))
                    // Count words in input file(s)
                    .apply(new CountWords())
                    // Format as text
                    .apply(MapElements.via(new FormatAsTextFn()))
                    // Make key-value pairs with the first letter as the key
                    .apply(ParDo.of(new FirstLetterAsKey()))
                    // Group the words by first letter
                    .apply(GroupByKey.<String, String> create())
                    // Get a PCollection of only the values, discarding the keys
                    .apply(ParDo.of(new GetValues()))
                    // Write the words to the database
                    .apply(JdbcIO.<String> writeIterable()
                            .withDataSourceConfiguration(
                                JdbcIO.DataSourceConfiguration.create(options.getJdbcDriver(), options.getURL()))
                            .withStatement(INSERT_OR_UPDATE_SQL)
                            .withPreparedStatementSetter(new WordCountPreparedStatementSetter()));
                

                與 JdbcIO 的普通寫入方法的不同之處在于新方法 writeIterable()PCollection> 作為輸入而不是 <代碼>PCollection.每個 Iterable 都作為一批寫入數據庫.

                The difference with the normal write-method of JdbcIO is the new method writeIterable() that takes a PCollection<Iterable<RowT>> as input instead of PCollection<RowT>. Each Iterable is written as one batch to the database.

                可以在此處找到具有此附加功能的 JdbcIO 版本:https://github.com/olavloite/beam/blob/JdbcIOIterableWrite/sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/JdbcIO.java

                The version of JdbcIO with this addition can be found here: https://github.com/olavloite/beam/blob/JdbcIOIterableWrite/sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/JdbcIO.java

                可以在此處找到包含上述示例的整個示例項目:https://github.com/olavloite/spanner-beam-example

                The entire example project containing the example above can be found here: https://github.com/olavloite/spanner-beam-example

                (Apache Beam 上還有一個拉取請求未決,以將其包含在項目中)

                (There is also a pull request pending on Apache Beam to include this in the project)

                這篇關于Google Dataflow (Apache beam) JdbcIO 批量插入 mysql 數據庫的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                相關文檔推薦

                How to use windowing functions efficiently to decide next N number of rows based on N number of previous values(如何有效地使用窗口函數根據 N 個先前值來決定接下來的 N 個行)
                reuse the result of a select expression in the quot;GROUP BYquot; clause?(在“GROUP BY中重用選擇表達式的結果;條款?)
                Does ignore option of Pyspark DataFrameWriter jdbc function ignore entire transaction or just offending rows?(Pyspark DataFrameWriter jdbc 函數的 ignore 選項是忽略整個事務還是只是有問題的行?) - IT屋-程序員軟件開發技
                Error while using INSERT INTO table ON DUPLICATE KEY, using a for loop array(使用 INSERT INTO table ON DUPLICATE KEY 時出錯,使用 for 循環數組)
                pyspark mysql jdbc load An error occurred while calling o23.load No suitable driver(pyspark mysql jdbc load 調用 o23.load 時發生錯誤 沒有合適的驅動程序)
                How to integrate Apache Spark with MySQL for reading database tables as a spark dataframe?(如何將 Apache Spark 與 MySQL 集成以將數據庫表作為 Spark 數據幀讀取?)
                  <tbody id='OecXG'></tbody>
              • <tfoot id='OecXG'></tfoot>
              • <i id='OecXG'><tr id='OecXG'><dt id='OecXG'><q id='OecXG'><span id='OecXG'><b id='OecXG'><form id='OecXG'><ins id='OecXG'></ins><ul id='OecXG'></ul><sub id='OecXG'></sub></form><legend id='OecXG'></legend><bdo id='OecXG'><pre id='OecXG'><center id='OecXG'></center></pre></bdo></b><th id='OecXG'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='OecXG'><tfoot id='OecXG'></tfoot><dl id='OecXG'><fieldset id='OecXG'></fieldset></dl></div>

                      • <bdo id='OecXG'></bdo><ul id='OecXG'></ul>
                        <legend id='OecXG'><style id='OecXG'><dir id='OecXG'><q id='OecXG'></q></dir></style></legend>

                          <small id='OecXG'></small><noframes id='OecXG'>

                          主站蜘蛛池模板: 日韩精品一区在线观看 | 久久久久亚洲精品中文字幕 | 日韩高清中文字幕 | 久久一二 | 中文字幕在线看人 | 国产精品久久久久久久久久久新郎 | 精品人伦一区二区三区蜜桃网站 | 日本91av视频 | 91久久精品国产91久久 | 久久久久久久久久久国产 | 久久国产精品视频 | 成人av电影免费在线观看 | 久久国产精品一区二区三区 | 亚州精品天堂中文字幕 | 午夜精品一区二区三区在线观看 | 久久精品亚洲一区二区三区浴池 | 国产精品免费一区二区三区 | 国产精品久久久久久婷婷天堂 | 国产91精品久久久久久久网曝门 | 9久久精品 | 超碰成人免费观看 | 69电影网 | 国产精品地址 | 精品国产91乱码一区二区三区 | 日韩一区二区在线观看视频 | 亚洲视频中文字幕 | 亚洲精品在线播放 | 成人天堂 | 在线看片福利 | h视频在线免费 | 亚洲网址在线观看 | 久久伊人免费视频 | 日本国产一区二区 | 国产午夜精品久久久久免费视高清 | 久久在线看 | 中文字幕一区在线观看视频 | 午夜欧美a级理论片915影院 | 亚洲精品在线免费观看视频 | 国产精品久久久久aaaa樱花 | 欧美成人高清视频 | 亚洲一区二区三区免费视频 |