hive 导出数据到本地

有时候需要将hive库中的部分数据导入至本地,这样子做可视化和小规模的数据挖掘实验都是比较方便的。数据导入至本地的HQL语法如下:
INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement1;
但是hive对字段分隔时默认使用的分隔符是^A,使用文本编辑器打开文件显示出来就是乱码,同时,后续提取字段值时需要指定这个特殊的分隔符,在python中使用line.split(‘\x01‘)来进行切分在java中split("\\u0001")来进行切分。

网上看到的方案都是上述这种使用默认分隔符进行切分的,不管是数据查看还是程序调试,都不太方便。但是,既然hive支持在建表的时候指定字段分隔符,hive在数据导出时应该也支持的。HQL建表时指定分隔符的语法为:

	CREATE TABLE u_data (
  		userid INT,
  		movieid INT,
  		rating INT,
  		unixtime STRING)
	ROW FORMAT DELIMITED
	FIELDS TERMINATED BY ‘\t‘;

想必在数据导出时,应该可以ROW FORMAT DELIMITED FIELDS TERMINATED BY 的方式来指定我们自定义的分隔符。于是,实验了一把,结果如我所愿。

用户指定分隔符来进行数据导出,比如我们会使用\t进行字段分割,那么HQL语法如下:
INSERT OVERWRITE [LOCAL] DIRECTORY directory1

ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t‘

select_statement1;

最后,只有在hive0.12及以上版本才支持该语法哦,hive0.12以下版本的,请自行探索吧。

原文链接: https://blog.csdn.net/zbc1090549839/article/details/53782367

原文地址:https://www.cnblogs.com/earendil/p/9157133.html

时间: 2025-01-06 10:25:42

hive 导出数据到本地的相关文章

hive导出数据到本地文件报错解决方法

hive导出到本地数据报错 Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask. Unable to move source hdfs://localhost:9000/tmp/hive/daisy/185ccfc8-52f0-48e4-acd2-866340445241/hive_2020-01-21_11-00-58_110_6359830348207520702-1/-mr-10000 to

hive将数据导致本地磁盘

hive -e "select * from wyp" >> local/wyp.txt   其中我更喜欢弄好临时表,然后交互式查询时让相关人员自己去按逻辑处理数据,最后通过hdfs的webui进行数据下载

Alex 的 Hadoop 菜鸟教程: 第9课 Sqoop1 从Hbase或者Hive导出mysql

今天讲讲怎么用sqoop将Hbase或者Hive的东西导出到mysql.不过事先要告诉大家 目前sqoop没有办法把数据直接从Hbase导出到mysql.必须要通过Hive建立2个表,一个外部表是基于这个Hbase表的,另一个是单纯的基于hdfs的hive原生表,然后把外部表的数据导入到原生表(临时),然后通过hive将临时表里面的数据导出到mysql 数据准备 mysql建立空表 CREATE TABLE `employee` ( `rowkey` int(11) NOT NULL, `id`

hive导入导出数据案例

查询数据: use ods;set /user.password=ODS-SH;select * from base_cdma_all limit 10; use tag_bonc;select * from dpi_http_userapp_statistics limit 100000; #设置显示当前使用的数据库 set hive.cli.print.current.db=true; #设置不优先使用MapReduce set hive.exec.mode.local.auto=true;

Hive中数据的加载和导出

原文:http://blog.javachen.com/2014/06/09/hive-data-manipulation-language.html 关于 Hive DML 语法,你可以参考 apache 官方文档的说明:Hive Data Manipulation Language. apache的hive版本现在应该是 0.13.0,而我使用的 hadoop 版本是 CDH5.0.1,其对应的 hive 版本是 0.12.0.故只能参考apache官方文档来看 cdh5.0.1 实现了哪些

hive学习总结(2)—Hive几种导出数据方式

1.拷贝文件 如果数据文件恰好是用户需要的格式,那么只需要拷贝文件或文件夹就可以. hadoop fs –cp source_path target_path 2.导出到本地文件系统 --不能使用insert into local directory来导出数据,会报错 --只能使用insert overwrite local directory来导出数据 --hive0.11版本之前,只能使用默认分隔符^A(ascii码是\00001) insert overwrite local direct

HIVE表数据的导入与导出(load data&insert overwrite)

1. 准备测试数据 首先创建普通表: create table test(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE; 创建分区表: CREATE EXTERNAL TABLE test_p( id int, name string ) partitioned by (date STRING) ROW FORMAT DELIMITED FIELDS TERMINATED

db2导出数据并导入hive临时表中

操作: 1.从db2 中导出数据到txt中 2.修改文件中的分隔符为":" 3.在hive中新建表(建表时需要制定分隔符) 4.导入数据 -------- 1.从db2 中导出数据到txt中 db2 -x "select col1,col2,col3  from tbl_name where xxx with ur">filename.txt 2.修改文件中的分隔符为":" cat filename.txt | awk '{print $1

sqoop从关系库导出数据到hive

[Author]: kwu sqoop从关系库导出数据到hive,sqoop支持条件查询关系库中的数到hive数据仓库中,并且字段无须与hive表中的字段一致. 具体实现的脚本: #!/bin/sh # upload logs to hdfs today=`date --date='0 days ago' +%Y-%m-%d` sqoop import --connect jdbc:mysql://10.130.2.6:3306/bdc_test --username lvwenjuan --p