pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

    <tfoot id='mfPUc'></tfoot>
      <legend id='mfPUc'><style id='mfPUc'><dir id='mfPUc'><q id='mfPUc'></q></dir></style></legend>
      <i id='mfPUc'><tr id='mfPUc'><dt id='mfPUc'><q id='mfPUc'><span id='mfPUc'><b id='mfPUc'><form id='mfPUc'><ins id='mfPUc'></ins><ul id='mfPUc'></ul><sub id='mfPUc'></sub></form><legend id='mfPUc'></legend><bdo id='mfPUc'><pre id='mfPUc'><center id='mfPUc'></center></pre></bdo></b><th id='mfPUc'></th></span></q></dt></tr></i><div class="1tdl7lj" id='mfPUc'><tfoot id='mfPUc'></tfoot><dl id='mfPUc'><fieldset id='mfPUc'></fieldset></dl></div>

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

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

        一種從Mysql讀取表數(shù)據(jù)到Pig的方法

        A way to read table data from Mysql to Pig(一種從Mysql讀取表數(shù)據(jù)到Pig的方法)

        1. <i id='FtuK0'><tr id='FtuK0'><dt id='FtuK0'><q id='FtuK0'><span id='FtuK0'><b id='FtuK0'><form id='FtuK0'><ins id='FtuK0'></ins><ul id='FtuK0'></ul><sub id='FtuK0'></sub></form><legend id='FtuK0'></legend><bdo id='FtuK0'><pre id='FtuK0'><center id='FtuK0'></center></pre></bdo></b><th id='FtuK0'></th></span></q></dt></tr></i><div class="1pfp7bh" id='FtuK0'><tfoot id='FtuK0'></tfoot><dl id='FtuK0'><fieldset id='FtuK0'></fieldset></dl></div>
          • <small id='FtuK0'></small><noframes id='FtuK0'>

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

                <legend id='FtuK0'><style id='FtuK0'><dir id='FtuK0'><q id='FtuK0'></q></dir></style></legend>
                  <tbody id='FtuK0'></tbody>
                  <bdo id='FtuK0'></bdo><ul id='FtuK0'></ul>
                  本文介紹了一種從Mysql讀取表數(shù)據(jù)到Pig的方法的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  大家都知道Pig已經支持DBStorage,但它們只支持從 Pig 到 mysql 這樣的加載結果

                  Everyone know that Pig have supported DBStorage, but they are only supported load results from Pig to mysql like that

                  STORE data INTO DBStorage('com.mysql.jdbc.Driver', 'dbc:mysql://host/db', 'INSERT ...');
                  

                  但是請告訴我像那樣從 mysql 讀取表的方法

                  But Please show me the way to read table from mysql like that

                  data = LOAD 'my_table' AS DBStorage('com.mysql.jdbc.Driver', 'dbc:mysql://host/db', 'SELECT * FROM my_table');
                  

                  這是我的代碼

                  public class DBLoader extends LoadFunc {
                      private final Log log = LogFactory.getLog(getClass());
                      private ArrayList mProtoTuple = null;
                      private Connection con;
                      private String jdbcURL;
                      private String user;
                      private String pass;
                      private int batchSize;
                      private int count = 0;
                      private String query;
                      ResultSet result;
                      protected TupleFactory mTupleFactory = TupleFactory.getInstance();
                  
                      public DBLoader() {
                      }
                  
                      public DBLoader(String driver, String jdbcURL, String user, String pass,
                              String query) {
                  
                          try {
                              Class.forName(driver);
                          } catch (ClassNotFoundException e) {
                              log.error("can't load DB driver:" + driver, e);
                              throw new RuntimeException("Can't load DB Driver", e);
                          }
                          this.jdbcURL = jdbcURL;
                          this.user = user;
                          this.pass = pass;
                          this.query = query;
                  
                      }
                  
                      @Override
                      public InputFormat getInputFormat() throws IOException {
                          // TODO Auto-generated method stub
                          return new TextInputFormat();
                      }
                  
                      @Override
                      public Tuple getNext() throws IOException {
                          // TODO Auto-generated method stub
                          boolean next = false;
                  
                          try {
                              next = result.next();
                          } catch (SQLException e) {
                              // TODO Auto-generated catch block
                              e.printStackTrace();
                          }
                  
                          if (!next)
                              return null;
                          int numColumns = 0;
                          // Get result set meta data
                          ResultSetMetaData rsmd;
                          try {
                              rsmd = result.getMetaData();
                              numColumns = rsmd.getColumnCount();
                          } catch (SQLException e) {
                              // TODO Auto-generated catch block
                              e.printStackTrace();
                          }
                  
                          for (int i = 0; i < numColumns; i++) {
                  
                              try {
                                  Object field = result.getObject(i);
                  
                                  switch (DataType.findType(field)) {
                                  case DataType.NULL:
                  
                                      mProtoTuple.add(null);
                  
                                      break;
                  
                                  case DataType.BOOLEAN:
                                      mProtoTuple.add((Boolean) field);
                  
                                      break;
                  
                                  case DataType.INTEGER:
                                      mProtoTuple.add((Integer) field);
                  
                                      break;
                  
                                  case DataType.LONG:
                                      mProtoTuple.add((Long) field);
                  
                                      break;
                  
                                  case DataType.FLOAT:
                                      mProtoTuple.add((Float) field);
                  
                                      break;
                  
                                  case DataType.DOUBLE:
                                      mProtoTuple.add((Double) field);
                  
                                      break;
                  
                                  case DataType.BYTEARRAY:
                                      byte[] b = ((DataByteArray) field).get();
                                      mProtoTuple.add(b);
                  
                                      break;
                                  case DataType.CHARARRAY:
                                      mProtoTuple.add((String) field);
                  
                                      break;
                                  case DataType.BYTE:
                                      mProtoTuple.add((Byte) field);
                  
                                      break;
                  
                                  case DataType.MAP:
                                  case DataType.TUPLE:
                                  case DataType.BAG:
                                      throw new RuntimeException("Cannot store a non-flat tuple "
                                              + "using DbStorage");
                  
                                  default:
                                      throw new RuntimeException("Unknown datatype "
                                              + DataType.findType(field));
                  
                                  }
                  
                              } catch (Exception ee) {
                                  throw new RuntimeException(ee);
                              }
                          }
                  
                          Tuple t = mTupleFactory.newTuple(mProtoTuple);
                          mProtoTuple.clear();
                          return t;
                  
                      }
                  
                      @Override
                      public void prepareToRead(RecordReader arg0, PigSplit arg1)
                              throws IOException {
                  
                          con = null;
                          if (query == null) {
                              throw new IOException("SQL Insert command not specified");
                          }
                          try {
                              if (user == null || pass == null) {
                                  con = DriverManager.getConnection(jdbcURL);
                              } else {
                                  con = DriverManager.getConnection(jdbcURL, user, pass);
                              }
                              con.setAutoCommit(false);
                              result = con.createStatement().executeQuery(query);
                          } catch (SQLException e) {
                              log.error("Unable to connect to JDBC @" + jdbcURL);
                              throw new IOException("JDBC Error", e);
                          }
                          count = 0;
                      }
                  
                      @Override
                      public void setLocation(String location, Job job) throws IOException {
                          // TODO Auto-generated method stub
                  
                          //TextInputFormat.setInputPaths(job, location);
                  
                      }
                  
                      class MyDBInputFormat extends InputFormat<NullWritable, NullWritable>{
                  
                          @Override
                          public RecordReader<NullWritable, NullWritable> createRecordReader(
                                  InputSplit arg0, TaskAttemptContext arg1) throws IOException,
                                  InterruptedException {
                              // TODO Auto-generated method stub
                              return null;
                          }
                  
                          @Override
                          public List<InputSplit> getSplits(JobContext arg0) throws IOException,
                                  InterruptedException {
                              // TODO Auto-generated method stub
                              return null;
                          }
                  
                      }
                  
                  }
                  

                  我嘗試了很多次寫 UDF 但都沒有成功.....

                  I try many times to write UDF but not success.....

                  推薦答案

                  就像你說的,DBStorage 只支持將結果保存到數(shù)據(jù)庫中.

                  Like you say, DBStorage only supports saving results to a database.

                  要從 MySQL 加載數(shù)據(jù),您可以查看名為 sqoop(將數(shù)據(jù)從數(shù)據(jù)庫復制到HDFS),或者您可以執(zhí)行 mysql 轉儲,然后將文件復制到 HDFS.兩種方式都需要一些交互,不能直接從 Pig 內部使用.

                  To load data from MySQL you could look into a project called sqoop (that copies data from a database to HDFS), or you could perform a mysql dump and then copy the file into HDFS. Both ways required some interaction and cannot be directly used from inside Pig.

                  第三種選擇是考慮編寫 Pig LoadFunc(您說您嘗試編寫 UDF).這應該不會太難,您需要傳遞與 DBStorage 相同的選項(驅動程序、連接憑據(jù)和要執(zhí)行的 SQL 查詢),并且您可能也可以使用一些結果集元數(shù)據(jù)檢查來自動生成模式.

                  A third option would be to look into writing a Pig LoadFunc (you say your tried to write a UDF). It shouldn't be too difficult, you'll need to pass much the same options as DBStorage (driver, connection credentials and a SQL query to execute), and you can probably use some result set metadata inspection to auto generate a schema too.

                  這篇關于一種從Mysql讀取表數(shù)據(jù)到Pig的方法的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

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

                  相關文檔推薦

                  How to use windowing functions efficiently to decide next N number of rows based on N number of previous values(如何有效地使用窗口函數(shù)根據(jù) 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 函數(shù)的 ignore 選項是忽略整個事務還是只是有問題的行?) - IT屋-程序員軟件開發(fā)技
                  Error while using INSERT INTO table ON DUPLICATE KEY, using a for loop array(使用 INSERT INTO table ON DUPLICATE KEY 時出錯,使用 for 循環(huán)數(shù)組)
                  pyspark mysql jdbc load An error occurred while calling o23.load No suitable driver(pyspark mysql jdbc load 調用 o23.load 時發(fā)生錯誤 沒有合適的驅動程序)
                  How to integrate Apache Spark with MySQL for reading database tables as a spark dataframe?(如何將 Apache Spark 與 MySQL 集成以將數(shù)據(jù)庫表作為 Spark 數(shù)據(jù)幀讀取?)
                    <bdo id='dzORJ'></bdo><ul id='dzORJ'></ul>
                    <legend id='dzORJ'><style id='dzORJ'><dir id='dzORJ'><q id='dzORJ'></q></dir></style></legend>

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

                      <i id='dzORJ'><tr id='dzORJ'><dt id='dzORJ'><q id='dzORJ'><span id='dzORJ'><b id='dzORJ'><form id='dzORJ'><ins id='dzORJ'></ins><ul id='dzORJ'></ul><sub id='dzORJ'></sub></form><legend id='dzORJ'></legend><bdo id='dzORJ'><pre id='dzORJ'><center id='dzORJ'></center></pre></bdo></b><th id='dzORJ'></th></span></q></dt></tr></i><div class="zhxltzn" id='dzORJ'><tfoot id='dzORJ'></tfoot><dl id='dzORJ'><fieldset id='dzORJ'></fieldset></dl></div>

                        • <tfoot id='dzORJ'></tfoot>
                              <tbody id='dzORJ'></tbody>
                          1. 主站蜘蛛池模板: 窖井盖锯圆机_锯圆机金刚石锯片-无锡茂达金刚石有限公司 | 洗石机-移动滚筒式,振动,螺旋,洗矿机-青州冠诚重工机械有限公司 | 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 【ph计】|在线ph计|工业ph计|ph计厂家|ph计价格|酸度计生产厂家_武汉吉尔德科技有限公司 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 直流电能表-充电桩电能表-导轨式电能表-智能电能表-浙江科为电气有限公司 | 自动化改造_智虎机器人_灌装机_贴标机-上海圣起包装机械 | 气动|电动调节阀|球阀|蝶阀-自力式调节阀-上海渠工阀门管道工程有限公司 | 旗帜网络笔记-免费领取《旗帜网络笔记》电子书 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 培训无忧网-教育培训咨询招生第三方平台 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | 粤丰硕水性环氧地坪漆-防静电自流平厂家-环保地坪涂料代理 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 聚合氯化铝厂家-聚合氯化铝铁价格-河南洁康环保科技 | 免联考国际MBA_在职MBA报考条件/科目/排名-MBA信息网 | 气密性检测仪_气密性检测设备_防水测试仪_密封测试仪-岳信仪器 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | cnc精密加工_数控机械加工_非标平键定制生产厂家_扬州沃佳机械有限公司 | 加盟店-品牌招商加盟-创业项目商机平台 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | COD分析仪|氨氮分析仪|总磷分析仪|总氮分析仪-圣湖Greatlake | 济南菜鸟驿站广告|青岛快递车车体|社区媒体-抖音|墙体广告-山东揽胜广告传媒有限公司 | 深圳展厅设计_企业展馆设计_展厅设计公司_数字展厅设计_深圳百艺堂 | 防渗土工膜|污水处理防渗膜|垃圾填埋场防渗膜-泰安佳路通工程材料有限公司 | 即用型透析袋,透析袋夹子,药敏纸片,L型涂布棒-上海桥星贸易有限公司 | 定制防伪标签_防伪标签印刷_防伪标签厂家-510品保防伪网 | 复盛空压机配件-空气压缩机-复盛空压机(华北)总代理 | 农业仪器网 - 中国自动化农业仪器信息交流平台 | 餐饮加盟网_特色餐饮连锁加盟店-餐饮加盟官网 | 环压强度试验机-拉链拉力试验机-上海倾技仪器仪表科技有限公司 | 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 不锈钢轴流风机,不锈钢电机-许昌光维防爆电机有限公司(原许昌光维特种电机技术有限公司) | 流量检测仪-气密性检测装置-密封性试验仪-东莞市奥图自动化科技有限公司 | 挤出机_橡胶挤出机_塑料挤出机_胶片冷却机-河北伟源橡塑设备有限公司 |