`
lookqlp
  • 浏览: 345738 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

sqoop导入数据至hive

阅读更多


使用sqoop导入数据至hive常用语句

    直接导入hive表
     sqoop import --connect jdbc:postgresql://ip/db_name--username user_name  --table table_name  --hive-import -m 5
    内部执行实际分三部,1.将数据导入hdfs(可在hdfs上找到相应目录),2.创建hive表名相同的表,3,将hdfs上数据传入hive表中
    sqoop根据postgresql表创建hive表
    sqoop create-hive-table --connect jdbc:postgresql://ip/db_name --username user_name  --table table_name  --hive-table hive_table_name( --hive-partition-key partition_name若需要分区则加入分区名称)
    导入hive已经创建好的表中
    sqoop import --connect jdbc:postgresql://ip/db_name --username user_name  --table table_name  --hive-import -m 5 --hive-table hive_table_name  (--hive-partition-key partition_name --hive-partition-value partititon_value);
    使用query导入hive表
    sqoop import --connect jdbc:postgresql://ip/db_name --username user_name  --query "select ,* from retail_tb_order where \$CONDITIONS"  --hive-import -m 5 --hive-table hive_table_name  (--hive-partition-key partition_name --hive-partition-value partititon_value);
    注意:$CONDITIONS条件必须有,query子句若用双引号,则$CONDITIONS需要使用\转义,若使用单引号,则不需要转义。

遇到问题

    若需要在导入hive数据表的前提下,再添加在原有关系型数据库中没有的一列数据如何解决。
    首先,我们想到的是添加一个partition可很方便的添加“一列”数据,partition的使用很类似普通一列,常用的sql执行是没有问题的。
    其次,想到在query的sql中添加一个常量或者一个变量,例如:”select 'hello',* from retail_tb_order where \$CONDITIONS“,执行后会报异常
    12/08/28 14:41:31 INFO tool.CodeGenTool: Beginning code generation
    12/08/28 14:41:31 INFO manager.SqlManager: Executing SQL statement: select 'hello',* from retail_tb_order where  (1 = 0)
    12/08/28 14:41:32 INFO manager.SqlManager: Executing SQL statement: select 'hello',* from retail_tb_order where  (1 = 0)
    12/08/28 14:41:32 ERROR orm.ClassWriter: Cannot resolve SQL type 1111
    12/08/28 14:41:32 ERROR orm.ClassWriter: Cannot resolve SQL type 1111
    12/08/28 14:41:32 ERROR orm.ClassWriter: No Java type for SQL type 1111 for column _column_
    12/08/28 14:41:32 ERROR orm.ClassWriter: No Java type for SQL type 1111 for column _column_
    12/08/28 14:41:32 ERROR orm.ClassWriter: No Java type for SQL type 1111 for column _column_
    12/08/28 14:41:32 ERROR orm.ClassWriter: No Java type for SQL type 1111 for column _column_
    12/08/28 14:41:32 ERROR orm.ClassWriter: No Java type for SQL type 1111 for column _column_
    12/08/28 14:41:32 ERROR orm.ClassWriter: No Java type for SQL type 1111 for column _column_
    12/08/28 14:41:32 ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.NullPointerException
    java.lang.NullPointerException
        at org.apache.sqoop.orm.ClassWriter.parseNullVal(ClassWriter.java:900)
        at org.apache.sqoop.orm.ClassWriter.parseColumn(ClassWriter.java:925)
        at org.apache.sqoop.orm.ClassWriter.generateParser(ClassWriter.java:999)
        at org.apache.sqoop.orm.ClassWriter.generateClassForColumns(ClassWriter.java:1314)
        at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1138)
        at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:82)
        at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:367)
        at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:453)
        at org.apache.sqoop.Sqoop.run(Sqoop.java:145)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
        at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:181)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:220)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:229)
        at org.apache.sqoop.Sqoop.main(Sqoop.java:238)
        at com.cloudera.sqoop.Sqoop.main(Sqoop.java:57)

    该问题出现原因是sqoop ClassWriter类会在postgresql表中解析sql中的所有列,当解析常量'hello'时,数据库没有该列也就找不到相应的数据类型。
    若要解决该问题应该需修改ClassWriter源码。

若有解决的q我
分享到:
评论
2 楼 lookqlp 2014-08-04  
yuanshuai 写道
你Q是多少。

595448615
1 楼 yuanshuai 2014-08-01  
你Q是多少。

相关推荐

    sqoop导入数据到hive中,数据不一致

    4. 分区问题:如果Hive表是分区表,而Sqoop导入时未正确处理分区,可能会导致数据分布不均或者丢失部分数据。确保在导入时指定了正确的分区字段和值。 5. 编码问题:数据源的字符编码与Hive或Hadoop集群的默认编码...

    bdp2hive:生成hive分区表、sqoop导入数据至hive

    bdp2hive项目介绍一、概述项目主要是集成生成sqoop脚本和创建hive分区表组件。生成sqoop脚本组件主要通过传递的数据库信息查询数据库获取表字段与数据集之间的对照关系SQL语句,通过模板拼接成sqoop脚本,上传服务器...

    sqoop从mysql中导入数据到parquet格式的hive中

    sqoop导入数据到hive

    Sqoop导Oracle数据到Hive

    ### Sqoop导入Oracle数据到Hive的详细步骤与解析 #### 一、概述 在大数据处理领域中,经常需要将关系型数据库中的数据导入到Hadoop的HDFS中,以便进一步进行数据分析或处理。其中,Sqoop作为一种强大的工具,能够...

    2、sqoop导入(RMDB-mysql、sybase到HDFS-hive)

    Sqoop 可以直接创建 Hive 表并导入数据: ```bash # 创建 Hive 表 sqoop create-hive-table --table my_hive_table --fields-terminated-by ',' --lines-terminated-by '\n' --connect jdbc:mysql://<hostname>:...

    sqoop导入数据到hdfs路径

    ### Sqoop导入数据到HDFS路径详解 #### 一、Sqoop简介 Sqoop是一款开源工具,主要用于在Hadoop和关系型数据库之间高效地传输大量数据。它利用MapReduce作业来提取、转换和加载(ETL)数据。通过Sqoop,用户可以从...

    一个简单的Hive项目,使用了Sqoop、Hadoop、Hive、MySQL,对电商数据进行分析-BI_project.zip

    通过编写SQL查询或者配置文件,Sqoop能够批量导入数据,同时支持各种数据库类型,确保数据迁移的灵活性和兼容性。 其次,Hadoop作为大数据处理的基础框架,其核心组件包括HDFS和MapReduce。HDFS提供了高容错性和高...

    实战Sqoop数据导入及大数据用户行为案例分析

    实战Sqoop数据导入及大数据用户行为案例分析...08_Sqoop将MySQL数据导入Hive表中 09_Sqoop的导出及脚本中使用的方式 10_案例分析-动态分区的实现 11_案例分析-源表的分区加载创建 12_案例分析-指标分析使用Sqoop导出

    数据同步Sqoop用法之mysql与Hive导入导出.docx

    Sqoop 提供了灵活的数据导入方式,可以将 MySQL 数据库中的数据导入到 Hive 表中。例如,以下命令可以将 MySQL 数据库中的 people_access_log 表导入到 Hive 表 web.people_access_log 中: sqoop import \ --...

    Sqoop数据采集工具简介、安装、使用学习笔记(配合Hive和Hbase)

    最初的设计方案是通过 Sqoop 将数据从 PostgreSQL 导入到 Kafka,再通过存储程序将 Kafka 的数据保存至 Hive 或 HBase 中。然而,在实施过程中遇到了 Sqoop 版本兼容性问题: - **Sqoop1**:适用于命令行模式执行。...

    sqoop从mysql到hive的时间字段问题

    一、问题发现与分析 ...经过对比:sqoop在转换MySQL的datatime字段类型为hive的string时会出现问题:默认先转为对应时间戳,再转换为北京市区时间,就会使时间多8小时。 解决办法有两个: 1、在sql里将时间字段转换为

    23-Sqoop数据导入导出1

    - 导入数据:使用Sqoop将MySQL数据导入Hive,数据会自动创建为Hive外部表。 在实际操作中,可以使用`--where`参数限制导入导出的数据范围,提高灵活性。此外, Sqoop还支持增量导入,通过指定last-row键值,只导入...

    sqoop-spark-hive:MYSQL | SQOOP | 火花| HIVE工作流程

    mysql,sqoop,spark,hive工作流管道它将通过两个表order和order_items产生每日收入Sqoop 以“ parquet”格式将订单和order_items数据从mysql导入到hdfs 在这里,我们正在创建sqoop作业以用于增量数据导入命令订单...

    使用spark对网站用户行为分析

    4.使用Sqoop将数据从Hive导入MySQL 5.使用Sqoop将数据从MySQL导入HBase 6.使用HBase Java API把数据从本地导入到HBase中 7.使用R对MySQL中的数据进行可视化分析 内含三份报告和数据集,报告中有源码,是用spark做的

    yinian_hive_increase_sqoop:sqoop从mysql同步数据到hive

    【标题】"yinian_hive_increase_sqoop:sqoop从mysql同步数据到hive" 描述了一种使用Apache Sqoop工具将数据从MySQL数据库高效地导入到Hadoop的Hive数据仓库的过程。这个过程在大数据处理中至关重要,因为它允许用户...

    sqoop把mysql数据导入hbase2.1.6

    在导入数据时,Sqoop会将所有字段的值序列化为字符串,并将其转换为UTF-8编码的二进制值存储在HBase中。这意味着所有类型的数据都将被转换为文本格式,这可能会影响数据的读取效率和存储空间。 总的来说,将MySQL...

    使用sqoop抽取mysql数据

    例如,`sqoop import` 命令用于从 MySQL 导入数据,`--connect` 参数指定数据库连接字符串,`--table` 指定要导入的表名,`--target-dir` 指定 HDFS 上的目标目录,`--username` 和 `--password-file` 用于身份验证...

    hadoop软件1,和hive_3,sqoop_2搭配使用

    例如,我们可以先使用Sqoop将关系数据库中的数据导入到Hadoop的HDFS中,然后通过Hive对这些数据进行清洗、转换和分析。分析完成后,如果需要将结果数据返回到数据库,同样可以利用Sqoop完成导出操作。这种组合应用...

    mysql-connector-5.1.39,配合sqoop1.4.7和hive2.1.1使用

    4. **数据分析**:在Hadoop集群上,Hive可以读取由Sqoop导入的MySQL数据进行大规模的分析工作,利用Hadoop的分布式计算能力处理大量数据,然后将结果通过Sqoop返回到MySQL,或者直接在MySQL中进行进一步的处理和展示...

Global site tag (gtag.js) - Google Analytics