最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于使用SQOOP抽數(shù)到Hive遇到的問(wèn)題

 更新時(shí)間:2024年04月12日 11:22:53   作者:Meepoljd  
這篇文章主要介紹了關(guān)于使用SQOOP抽數(shù)到Hive遇到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

使用SQOOP抽數(shù)到Hive遇到問(wèn)題

前置條件

1.源端數(shù)據(jù)庫(kù)類(lèi)型為Mysql

2.目標(biāo)端是Hive庫(kù),beeline為1.1.0

3.Hive建表時(shí)使用了分桶,并且加入了stored as orc參數(shù),之前這么創(chuàng)建是為了能夠?qū)崿F(xiàn)delete等操作

處理過(guò)程

最初想要在Sqoop中使用hcatalog直接建表+抽數(shù)據(jù),語(yǔ)句是這樣寫(xiě)的:

sqoop import --connect jdbc:mysql://XX.XX.XX.XX:19100/pms_scyw --username root --password ********\
--table t_sb_zwyc_xl --null-string '\\N' --null-non-string '\\N' \
--create-hcatalog-table \
--hcatalog-database test1 \
--hcatalog-table t_sb_zwyc_xl_521 \
--hcatalog-storage-stanza "clustered by (obj_id) into 16 buckets stored as orc TBLPROPERTIES('transactional'='true')"
#查到的資料說(shuō)hcatalog-storage-stanza參數(shù)會(huì)在建表的時(shí)候自動(dòng)加入到create語(yǔ)句之后,所以這里這樣寫(xiě)

滿心期待說(shuō)能直接把工作做完了,結(jié)果就報(bào)錯(cuò)了,報(bào)錯(cuò)結(jié)果如下:

19/05/21 10:03:57 INFO hcat.SqoopHCatUtilities: Executing external HCatalog CLI process with args :-f,/tmp/hcat-script-1558404237184
19/05/21 10:04:00 INFO hcat.SqoopHCatUtilities: FAILED: IllegalArgumentException Decimal precision out of allowed range [1,38]
19/05/21 10:04:00 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: HCat exited with status 64
at org.apache.sqoop.mapreduce.hcat.SqoopHCatUtilities.executeExternalHCatProgram(SqoopHCatUtilities.java:1148)
at org.apache.sqoop.mapreduce.hcat.SqoopHCatUtilities.launchHCatCli(SqoopHCatUtilities.java:1097)
at org.apache.sqoop.mapreduce.hcat.SqoopHCatUtilities.createHCatTable(SqoopHCatUtilities.java:644)
at org.apache.sqoop.mapreduce.hcat.SqoopHCatUtilities.configureHCat(SqoopHCatUtilities.java:340)
at org.apache.sqoop.mapreduce.hcat.SqoopHCatUtilities.configureImportOutputFormat(SqoopHCatUtilities.java:802)
at org.apache.sqoop.mapreduce.ImportJobBase.configureOutputFormat(ImportJobBase.java:98)
at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:259)
at org.apache.sqoop.manager.SqlManager.importTable(SqlManager.java:692)
at org.apache.sqoop.manager.MySQLManager.importTable(MySQLManager.java:118)
at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:497)
at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605)
at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
at org.apache.sqoop.Sqoop.main(Sqoop.java:236)

看信息似乎是精度超過(guò)了限制,怎么會(huì)呢,隨即看了看Sqoop生成的建表語(yǔ)句,找到端倪了:

    `dqtz` varchar(6),
    `dszll` decimal(12,4),
    `dxmpyxkid` varchar(42),
    `dycs` decimal(65),

可以看到有個(gè)字段的類(lèi)型是decimal(65),允許范圍只有1-38,這顯然超了,這咋辦啊,只有求助谷歌大法了,查來(lái)查去也只發(fā)現(xiàn)這一個(gè)帖子:

帖子鏈接https://kb.informatica.com/solution/23/pages/64/524288.aspx

原帖給了一種解決方法

Solution
To resolve this issue, we need to ensure that the Precision and the Scale of the Number datatype changes from 0 to a valid value.
To achieve this, add the following arguments in the JDBC parameters of the Oracle connection.
CatalogOptions=0;NumberPrecisionScale=1
Add above to the Connection string of the JDBC connection used for metadata access.
After modifying the JDBC connection string, re-import the metadata and verify if the right precision is getting imported.

意思就是說(shuō)在JDBC串后面加上“CatalogOptions=0;NumberPrecisionScale=1”參數(shù),可人家用的源庫(kù)是oracle,我這是mysql,給的方法也不頂用,就很頭大,沒(méi)辦法,只有花點(diǎn)時(shí)間自己建表然后把數(shù)據(jù)導(dǎo)進(jìn)來(lái)了。

捯飭了一段時(shí)間,表建好了,ok,再抽一下試試看,這次語(yǔ)句變了下:

sqoop import  --connect jdbc:mysql://XX.XX.XX.XX:19100/pms_scyw --username root --password ********\
 --table t_sb_zwyc_xl --null-string '\\N' --null-non-string '\\N'  \
 --fields-terminated-by '~@!'   -m 2 \
 --hive-overwrite \
 --hcatalog-database test1 \
 --hcatalog-table t_sb_zwyc_xl_ljd \
 --verbose ; 

結(jié)果又報(bào)錯(cuò)了,好在不是和上次同樣的錯(cuò)誤,看看是什么問(wèn)題:

ERROR tool.ImportTool: Encountered IOException running import job: org.apache.hive.hcatalog.common.HCatException : 2016 : Error operation not supported : Store into a partition with bucket definition from Pig/Mapreduce is not supported
at org.apache.hive.hcatalog.mapreduce.HCatOutputFormat.setOutput(HCatOutputFormat.java:109)
at org.apache.hive.hcatalog.mapreduce.HCatOutputFormat.setOutput(HCatOutputFormat.java:70)
at org.apache.sqoop.mapreduce.hcat.SqoopHCatUtilities.configureHCat(SqoopHCatUtilities.java:346)
at org.apache.sqoop.mapreduce.hcat.SqoopHCatUtilities.configureImportOutputFormat(SqoopHCatUtilities.java:768)
at org.apache.sqoop.mapreduce.ImportJobBase.configureOutputFormat(ImportJobBase.java:98)
at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:249)
at org.apache.sqoop.manager.SqlManager.importTable(SqlManager.java:665)

舒服了,這次直接是說(shuō)不支持分桶格式了,查了下,貌似Sqoop暫時(shí)還是不支持分桶的表,但是可以通過(guò)臨時(shí)表來(lái)進(jìn)行一下數(shù)據(jù)的中轉(zhuǎn),那就先建個(gè)臨時(shí)表,不過(guò)這個(gè)臨時(shí)表不加“clustered by (obj_id) into 16 buckets”參數(shù),只在create語(yǔ)句后加上stored as orc TBLPROPERTIES(‘transactional’=‘true’) 就行了,隨后就是先把數(shù)據(jù)抽進(jìn)臨時(shí)表,在從臨時(shí)表insert到目標(biāo)表去就可以了。

一通操作做完以后驗(yàn)證一下表內(nèi)的數(shù)據(jù)也是ok的。

雖然目的是達(dá)到了,但是發(fā)現(xiàn)了一個(gè)問(wèn)題,在目標(biāo)表中進(jìn)行查詢時(shí),select后面加了limit的話,Hive服務(wù)會(huì)直接宕機(jī)掉,日志也沒(méi)有ERROR級(jí)別的,很奇怪,只能后面再找找原因

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • git?pull和git?clone的區(qū)別詳解

    git?pull和git?clone的區(qū)別詳解

    本文主要介紹了git?pull和git?clone的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • VS2019如何查看類(lèi)圖的方法實(shí)現(xiàn)

    VS2019如何查看類(lèi)圖的方法實(shí)現(xiàn)

    這篇文章主要介紹了VS2019如何查看類(lèi)圖的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Git忽略文件.gitignore操作方法指南

    Git忽略文件.gitignore操作方法指南

    這篇文章主要介紹了了Git中的.gitignore文件及其用法,包括如何創(chuàng)建、配置和使用.gitignore文件來(lái)忽略不需要提交的文件和目錄,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • kafka不支持讀寫(xiě)分離原理分析

    kafka不支持讀寫(xiě)分離原理分析

    這篇文章主要為大家介紹了kafka不支持讀寫(xiě)分離原理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Git與遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行關(guān)聯(lián)設(shè)置方式

    Git與遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行關(guān)聯(lián)設(shè)置方式

    本文介紹了如何安裝和配置Git,以及如何將其與GitHub和Gitee等遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行關(guān)聯(lián),通過(guò)修改配置文件和生成SSH密鑰,可以實(shí)現(xiàn)將本地項(xiàng)目同時(shí)推送到多個(gè)遠(yuǎn)程倉(cāng)庫(kù)
    2024-11-11
  • VSCode修改擴(kuò)展和用戶文件夾目錄位置方式(Windows)

    VSCode修改擴(kuò)展和用戶文件夾目錄位置方式(Windows)

    這篇文章主要介紹了VSCode修改擴(kuò)展和用戶文件夾目錄位置方式(Windows),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2026-03-03
  • IntelliJ IDEA 性能優(yōu)化的教程詳解

    IntelliJ IDEA 性能優(yōu)化的教程詳解

    這篇文章主要介紹了IntelliJ IDEA 性能優(yōu)化的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 分享15個(gè)美化代碼的代碼語(yǔ)法高亮工具

    分享15個(gè)美化代碼的代碼語(yǔ)法高亮工具

    由于技術(shù)類(lèi)網(wǎng)站經(jīng)常提供一些代碼,分享給大家,但普通的代碼看起來(lái)不那么舒服,所以很多人開(kāi)發(fā)了代碼高亮插件,讓代碼顯示的更漂亮
    2013-09-09
  • ffmpeg網(wǎng)頁(yè)視頻流m3u8 ts實(shí)現(xiàn)視頻下載

    ffmpeg網(wǎng)頁(yè)視頻流m3u8 ts實(shí)現(xiàn)視頻下載

    這篇文章主要為大家介紹了ffmpeg網(wǎng)頁(yè)視頻流m3u8 ts實(shí)現(xiàn)視頻下載詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 為什么使用框架 使用框架的優(yōu)缺點(diǎn)

    為什么使用框架 使用框架的優(yōu)缺點(diǎn)

    我們是由于效率和易用性的考慮才產(chǎn)生框架??蚣苣芄?jié)省開(kāi)發(fā)時(shí)間??蚣軓?qiáng)制使用公共的約定,因此它能有效地解決一些共有的問(wèn)題,比如頁(yè)面渲染,assert判斷,安全或者應(yīng)用配置等
    2012-09-09

最新評(píng)論

英吉沙县| 大方县| 老河口市| 阿瓦提县| 垣曲县| 夏津县| 梁平县| 红安县| 广西| 湄潭县| 凭祥市| 铜山县| 遂昌县| 花莲市| 全州县| 囊谦县| 凤庆县| 哈巴河县| 蒙自县| 中阳县| 天长市| 出国| 东丰县| 上栗县| 开封市| 万盛区| 雅安市| 秭归县| 宜章县| 泾阳县| 固镇县| 南雄市| 沈丘县| 湖南省| 柳河县| 徐州市| 巨鹿县| 德江县| 蚌埠市| 城固县| 常宁市|