无法在这个位置找到: article_head.htm
返回首页

hive的数据能修改吗?

57 2025-04-14 06:29 赋能高科

一、hive的数据能修改吗?

普通表可以通过update来修改数据。语法是update 表名 set 字段名=“”where 条件

二、hive中count的数据类型?

可以在count里使用case,when,distinct等处理,满足日常数据统计需求。

三、hive数据中最小的粒度是?

对于Hive分区表,因为最小粒度是表级别。因此,元数据统计信息也是表级别的。

四、hive不支持的数据类型?

hive支持多种不同长度的整型和浮点型数据,支持布尔型,也支持无长度限制的字符串类型。例如:TINYINT、SMALINT、BOOLEAN、FLOAT、DOUBLE、STRING等基本数据类型。这些基本数据类型和其他sql方言一样,都是保留字。hive不支持的数据类型是datetime。

五、如何用hive查询hbase中的数据?

方法有两种:

1.一种是通过Java,直接读取数据,然后在插入hive中

2.第二种是整合hbase,hive。

整合后,再创建一个表,然后将数据导入新建的hive表中

六、hive里如何提取最新分区的数据?

hivesql sql — 获取指定hive表或指定文件中所有hive表的DDL,如果有按天的分区则默认执行最近7天的分区DDL。

同时,table支持符合sql语法的正则表达式,如果有多个表匹配,则提示用户选择(使用file则自动关闭该交互功能)。

七、hive的关联数据库是什么?

答:hive的关联数据库是derby、mysql。

八、Hive数据库是哪个公司开发的?

Hive是由Facebook开源用于解决海量结构化日志的数据统计工具。在普遍的大数据应用当中,Hive是作为Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。Hive的本质是将HQL转化成MapReduce程序。

九、hive库中的数据能直接导出吗?

在命令行,使用以下语句,会将数据到处至csv文件

hive -e 'SELECT * FROM table' > table.csv

十、怎么用sqoop把hive的数据导入mysql?

运行环境 centos 5.6 hadoop hive

sqoop是让hadoop技术支持的clouder公司开发的一个在关系数据库和hdfs,hive之间数据导入导出的一个工具。

上海尚学堂hadoop大数据培训组原创,陆续有hadoop大数据技术相关文章奉上,请多关注!

在使用过程中可能遇到的问题:

sqoop依赖zookeeper,所以必须配置ZOOKEEPER_HOME到环境变量中。

sqoop-1.2.0-CDH3B4依赖hadoop-core-0.20.2-CDH3B4.jar,所以你需要下载hadoop-0.20.2-CDH3B4.tar.gz,解压缩后将hadoop-0.20.2-CDH3B4/hadoop-core-0.20.2-CDH3B4.jar复制到sqoop-1.2.0-CDH3B4/lib中。

1 首先安装sqoop,如果你使用的是clouder分发版的话就非常简单

# yum install sqoop

如果用官方版本的话

# cd /etc/yum.repos.d

# wget http://archive.cloudera.com/redhat/cdh/cloudera-cdh3.repo

# yum -y install sqoop

sqoop就会安装完成

2 使用sqoop

首先将mysql-connector-java-5.1.16-bin.jar文件复制到/usr/lib/sqoop/lib文件夹下

3 导入导出数据库

1)列出mysql数据库中的所有数据库命令

# sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password 123456

2)连接mysql并列出数据库中的表命令

# sqoop list-tables --connect jdbc:mysql://localhost:3306/test --username root --password 123456

命令中的test为mysql数据库中的test数据库名称 username password分别为mysql数据库的用户密码

3)将关系型数据的表结构复制到hive中

sqoop create-hive-table --connect jdbc:mysql://localhost:3306/test --table username --username root --password 123456 --hive-table test

其中 --table username为mysql中的数据库test中的表 --hive-table test 为hive中新建的表名称

4)从关系数据库导入文件到hive中

sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password mysql-password --table t1 --hive-import

5)将hive中的表数据导入到mysql中

./sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password admin --table uv_info --export-dir /user/hive/warehouse/uv/dt=2011-08-03

如果报错

11/08/05 10:51:22 INFO mapred.JobClient: Running job: job_201108051007_0010

11/08/05 10:51:23 INFO mapred.JobClient: map 0% reduce 0%

11/08/05 10:51:36 INFO mapred.JobClient: Task Id : attempt_201108051007_0010_m_000000_0, Status : FAILED

java.util.NoSuchElementException

at java.util.AbstractList$Itr.next(AbstractList.java:350)

at uv_info.__loadFromFields(uv_info.java:194)

at uv_info.parse(uv_info.java:143)

at com.cloudera.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:79)

at com.cloudera.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:38)

at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)

at com.cloudera.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:187)

at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:647)

at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323)

at org.apache.hadoop.mapred.Child$4.run(Child.java:270)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:396)

at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127)

at org.apache.hadoop.mapred.Child.main(Child.java:264)

此错误的原因为sqoop解析文件的字段与MySql数据库的表的字段对应不上造成的。因此需要在执行的时候给sqoop增加参数,告诉sqoop文件的分隔符,使它能够正确的解析文件字段。

hive默认的字段分隔符为'\001'

./sqoop export --connect jdbc:mysql://localhost:3306/datacenter --username root --password admin --table uv_info --export-dir /user/hive/warehouse/uv/dt=2011-08-03 --input-fields-terminated-by '\t'

无法在这个位置找到: article_footer.htm