天道酬勤,学无止境

Issue creating Hive External table using tblproperties

I am trying to create an external table with tblproperties in Hive. The table gets created but it does not display the rows. Any ideas? Please find the scripts i am using below:

Thanks for your time and suggestions in advance.

Data is in a recursive folder: /user/test/test1/test2/samplefile.csv

use dw_raw;
drop table if exists temp_external_tab1;

create external table if not exists temp_external_tab1 (
col1 int,
col2 string,
col3 string,
col4 string
)
row format delimited fields terminated by ','
lines terminated by '\n'
stored as textfile
location '/user/test/test1/'
tblproperties ("hive.input.dir.recursive" = "TRUE", 
    "hive.mapred.supports.subdirectories" = "TRUE",
    "hive.supports.subdirectories" = "TRUE", 
    "mapred.input.dir.recursive" = "TRUE");
标签

评论

These are not table properties, but global settings.

You should set these using 'set', i.e.:

set hive.mapred.supports.subdirectories=true;
set mapred.input.dir.recursive=true;

You've created a table but haven't put any data into it. Try

hive> LOAD DATA LOCAL INPATH '/user/test/test1/test2/samplefile.csv'
      INTO TABLE temp_external_tab1;

If you are using ambari the set the following properties to hive advanced config inside custom hive-site.xml.

SET hive.input.dir.recursive=TRUE

SET hive.mapred.supports.subdirectories=TRUE

SET hive.supports.subdirectories=TRUE

SET mapred.input.dir.recursive=TRUE

And then restart the affected services. This will read all the data recursively.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Hive常用输入和压缩建表语句
    Text 普通文本 create table `cp_api_log`(`line` string) partitioned by (`date` string) row format delimited fields terminated by '\t' lines terminated by '\n' stored as textfile -- 或 stored as 直接指定输入输出格式 -- stored as -- inputformat 'org.apache.hadoop.mapred.TextInputFormat' -- outputformat 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' ORC / parquet 列式存储 create external table `cp_api_log`(`line` string) partitioned by (`date` string) row format delimited fields terminated by '\t' stored as orc -- stored as parquet location 'hdfs://hdfs://BigdataCluster/user/hive/warehouse/sm_data.db
  • 蜂巢外部表跳过第一行(Hive External Table Skip First Row)
    问题 我正在使用Cloudera的Hive版本,并尝试在包含第一列中列名称的csv文件上创建外部表。 这是我用来执行此操作的代码。 CREATE EXTERNAL TABLE Test ( RecordId int, FirstName string, LastName string ) ROW FORMAT serde 'com.bizo.hive.serde.csv.CSVSerde' WITH SerDeProperties ( "separatorChar" = "," ) STORED AS TEXTFILE LOCATION '/user/File.csv' 样本数据 RecordId,FirstName,LastName 1,"John","Doe" 2,"Jane","Doe" 谁能帮助我跳过第一行,还是需要添加一个中间步骤? 回答1 数据中的标题行是Hive永远的头疼问题。 除非修改Hive源代码,否则我相信没有中间步骤就无法逃脱。 (编辑:这不再是正确的,请参阅下面的更新) 不幸的是,这回答了您的问题。 为了完整性,我将提出一些中间步骤的想法。 如果您愿意过滤掉所有与表相关的查询的标题行,则可以在数据加载过程中省去很多麻烦。 不幸的是,这几乎在其他任何地方都增加了额外的设置。 当标题行违反您的架构时,您将不得不变得聪明/混乱。 如果采用这种方法
  • Hive外部表格-CSV文件-标题行(Hive External table-CSV File- Header row)
    问题 以下是我创建的配置单元表: CREATE EXTERNAL TABLE Activity ( column1 type, </br> column2 type ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/exttable/'; 在我的HDFS位置/ exttable中,我有很多CSV文件,每个CSV文件也包含标题行。 当我执行选择查询时,结果也包含标题行。 在HIVE中,有什么方法可以忽略标题行或第一行? 回答1 您现在可以在配置单元0.13.0中跳过标头计数。 tblproperties ("skip.header.line.count"="1"); 回答2 如果您使用的是Hive 0.13.0或更高版本,则可以在表属性中指定“ skip.header.line.count” =“ 1”以删除标题。 有关补丁的详细信息,请参见:https://issues.apache.org/jira/browse/HIVE-5795 回答3 假设您要加载如下所示的csv文件,该文件位于/home/test/que.csv 1,TAP (PORTUGAL),AIRLINE 2,ANSA INTERNATIONAL,AUTO RENTAL 3,CARLTON HOTELS,HOTEL-MOTEL 现在
  • 在使用EMR / Hive将数据从S3导入DynamoDB的过程中,如何处理用引号(CSV)括起来的字段(How to handle fields enclosed within quotes(CSV) in importing data from S3 into DynamoDB using EMR/Hive)
    问题 我正在尝试使用EMR / Hive将数据从S3导入DynamoDB。 我的CSV文件中的字段包含在双引号中,并用逗号分隔。 在配置单元中创建外部表时,我可以将定界符指定为逗号,但是如何指定用引号引起来的字段呢? 如果未指定,我会看到DynamoDB中的值填充在两个双引号“ value”中,这似乎是错误的。 我正在使用以下命令来创建外部表。 有没有一种方法可以指定将字段括在双引号中? CREATE EXTERNAL TABLE emrS3_import_1(col1 string, col2 string, col3 string, col4 string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '","' LOCATION 's3://emrTest/folder'; 任何建议,将不胜感激。 感谢Jitendra 回答1 如果您坚持使用CSV文件格式,则必须使用自定义的SerDe。 这是一些基于opencsv库的工作。 但是,如果您可以修改源文件,则可以选择一个新的定界符以使引用的字段不是必需的(祝您好运),也可以重写以使用单个转义字符(例如“ \”)转义任何嵌入式逗号。可以在ROW FORMAT中使用ESCAPED BY指定: CREATE EXTERNAL TABLE emrS3_import_1(col1 string
  • Elasticsearch和Hive整合,将hive数据同步到ES中
    1 Elasticsearch整合Hive 1.1 软件环境 Hadoop软件环境 Hive软件环境 ES软件环境 1.2 ES-Hadoop介绍 1.2.1 官网 https://www.elastic.co/cn/products/hadoop 1.2.2 对 Hadoop 数据进行交互分析 Hadoop 是出色的批量处理系统,但是要想提供实时结果则颇具挑战。为了实现真正的交互式数据探索,您可以使用 ES-Hadoop 将 Hadoop 数据索引到 Elastic Stack,以充分利用快速的 Elasticsearch 引擎和Kibana精美的可视化效果。 有了 ES-Hadoop,您可以轻松构建动态的嵌入式搜索应用来处理您的 Hadoop 数据,或者使用全文本、空间地理查询和聚合,执行深度的低延时分析。从产品推荐到基因组测序,ES-Hadoop 开启了广泛而全新的应用领域。 1.2.3 让数据在 Elasticsearch 和 Hadoop 之间无缝移动 只有实现了数据的快速移动,才能让实时决策成为可能。凭借现有Hadoop API的动态扩展,ES-Hadoop让您能够在Elasticsearch和Hadoop之间轻松地双向移动数据,同时借助HDFS作为存储库,进行长期存档。分区感知、故障处理、类型转换和数据共享均可透明地完成。 1.2.4 本地对接Spark及其衍生技术
  • Hive基础sql语法(DDL)
    前言: 经过前面的学习 我们了解到Hive可以使用关系型数据库来存储元数据,而且Hive提供了比较完整的SQL功能 ,这篇文章主要介绍Hive基本的sql语法。 首先了解下Hive的数据存储结构,抽象图如下: 1.Database:Hive中包含了多个数据库,默认的数据库为default,对应于HDFS目录是/user/hadoop/hive/warehouse,可以通过hive.metastore.warehouse.dir参数进行配置(hive-site.xml中配置) 2.Table: Hive 中的表又分为内部表和外部表 ,Hive 中的每张表对应于HDFS上的一个目录,HDFS目录为:/user/hadoop/hive/warehouse/[databasename.db]/table 3.Partition:分区,每张表中可以加入一个分区或者多个,方便查询,提高效率;并且HDFS上会有对应的分区目录: /user/hadoop/hive/warehouse/[databasename.db]/table 4.Bucket(桶):暂且不讲 DDL操作(Data Definition Language) 参考官方文档: DDL文档HiveQL DDL statements are documented here, including: CREATE DATABASE
  • Hive使用嵌套子目录的输入创建表(Hive create table with inputs from nested sub-directories)
    问题 我在HDFS中的文件路径中有Avro格式的Avro数据,例如:/ /data/logs/[foldername]/[filename].avro文件夹名] / [文件名] /data/logs/[foldername]/[filename].avro 。 我想在所有这些日志文件(即/data/logs/*/*形式的所有文件)上创建一个Hive表。 (它们都基于相同的Avro模式。) 我正在使用以下标志mapred.input.dir.recursive=true运行以下查询: CREATE EXTERNAL TABLE default.testtable ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' LOCATION 'hdfs://.../data/*/*' TBLPROPERTIES ( 'avro.schema.url'='hdfs://.../schema.avsc')
  • 更改蜂巢表添加或删除列(Alter hive table add or drop column)
    问题 我在蜂巢中有兽人表,我想从该表中删除列 ALTER TABLE table_name drop col_name; 但我收到以下异常 执行配置单元查询时发生错误:OK失败:ParseException行1:35输入'user_id1'不匹配,期望在drop partition语句中的'drop'附近有PARTITION 有人可以帮助我或提供任何想法吗? 注意,我正在using hive 0.14 回答1 您不能使用命令ALTER TABLE table_name drop col_name;直接从表中删除列ALTER TABLE table_name drop col_name; 删除列的唯一方法是使用replace命令。 可以说,我有一个表emp,其中包含id,name和dept列。 我想删除表emp的id列。 因此,在replace columns子句中提供要成为表一部分的所有那些列。 下面的命令将从emp表中删除id列。 ALTER TABLE emp REPLACE COLUMNS( name string, dept string); 回答2 实现最终目标的另一种“愚蠢”方法是在不使用不需要的列的情况下创建新表。 使用Hive的正则表达式匹配将使此操作变得很容易。 这是我会做的: -- make a copy of the old table ALTER TABLE
  • 如何将用双引号括起来并用制表符分隔的CSV数据加载到HIVE表中?(How to load CSV data with enclosed by double quotes and separated by tab into HIVE table?)
    问题 我正在尝试从csv文件加载数据,其中值用双引号'“'和制表符分隔'\ t'括起来。但是当我尝试将其加载到蜂巢中时,它不会抛出任何错误,并且加载数据时没有任何错误错误,但我认为所有数据都已加载到单列中,并且大多数值显示为NULL,这是我的create table语句。 CREATE TABLE example ( organization STRING, order BIGINT, created_on TIMESTAMP, issue_date TIMESTAMP, qty INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ESCAPED BY '"' STORED AS TEXTFILE; 输入文件样本;- "Organization" "Order" "Created on" "issue_date" "qty" "GB" "111223" "2015/02/06 00:00:00" "2015/05/15 00:00:00" "5" "UK" "1110" "2015/05/06 00:00:00" "2015/06/1 00:00:00" "51" 和Load语句将数据推送到配置单元表中。 LOAD DATA INPATH '/user/example.csv' OVERWRITE INTO TABLE
  • HBase实战 | Hive数据导入云HBase
    网络环境专线:用户需要把hbase集群的VPC相关网络信息配置到专线里面,可直通hbase环境公有云虚拟机VPC环境:选择和hbase通VPC其他:需要开hbase公网注意:默认导入hbase数据,依赖的hbase-common、hbase-client、hbase-server、hbase-protocol使用社区的包即可。如果是公网需要使用云hbase发布的相关包方案一:hive关联hbase表方式适用场景:数据量不大4T以下(因为需要走hbase的api导入数据)从hbase页面获取zk连接地址,并用下述方式启动hive客户端hive --hiveconf hbase.zookeeper.quorum=xxxxhbase表不存在的情况创建hive表hive_hbase_table映射hbase表base_table,会自动创建hbase表hbase_table,且会随着hive表删除而删除。这里需要指定hive的schema到hbase schema的映射关系。关于类型可参考Hive/HBaseIntegrationCREATE TABLE hive_hbase_table(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH
  • HBase实战 | Hive数据导入云HBase
    网络环境专线:用户需要把hbase集群的VPC相关网络信息配置到专线里面,可直通hbase环境公有云虚拟机VPC环境:选择和hbase通VPC其他:需要开hbase公网注意:默认导入hbase数据,依赖的hbase-common、hbase-client、hbase-server、hbase-protocol使用社区的包即可。如果是公网需要使用云hbase发布的相关包方案一:hive关联hbase表方式适用场景:数据量不大4T以下(因为需要走hbase的api导入数据)从hbase页面获取zk连接地址,并用下述方式启动hive客户端hive --hiveconf hbase.zookeeper.quorum=xxxxhbase表不存在的情况创建hive表hive_hbase_table映射hbase表base_table,会自动创建hbase表hbase_table,且会随着hive表删除而删除。这里需要指定hive的schema到hbase schema的映射关系。关于类型可参考Hive/HBaseIntegrationCREATE TABLE hive_hbase_table(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH
  • Hive与Hbase整合及hive-hbase-handler的jar包重新编译
    一、为什么要整合hive和hbase 二、整合后实现的目标 三、当hive和hbase版本都是1.几时,需要重新编译jar包hive-hbase-handler,操作步骤如下: 1、下载hive源码:(这个地址可方便快捷下载大数据平台的各个组件) http://archive.apache.org/dist/hive/hive-1.2.1/ 2、解压,进入Hive源码,把hbase-handler模块引入Eclipse项目中: 3、创建Java Project: 4、创建lib文件夹 5、导入Hive源码的hbase-handler模块 6、把Hive和HBase 安装包lib目录下的所有jar包,复制到java project的lib目录下: 7、把lib包下的所有jar包Build Path,添加到类路径 将某个jar包从类路径中删除: 右键----- 8、打包项目,开始重新编译 9、替换hive/lib目录下的hive-hbase-handler-1.2.1.jar 四、建表测试: hive中创建hbase中不存在的表: CREATE TABLE hbase_table_1(key int, value string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH
  • Hive外部表中的最大列数(Maximum Number of Columns in Hive External Tables)
    问题 我正在尝试在Amazon的EMR上设置Hive,以从DynamoDB表中提取数据并将其转储到S3。 我已经按照此处的说明进行操作,并且在大多数桌子上都取得了成功。 但是,使用一个DynamoDB表时,出现错误(如下所示)。 有问题的表有很多列(> 100),并且将映射缩减为仅一部分可以运行脚本,因此我假设这是问题所在,但是我找不到任何文档围绕这个。 我可以定义的列数是否有某种硬性限制? 还是我可能在这里遇到其他限制? 有办法解决这个问题吗? 我收到的错误看起来像: FAILED: Error in metadata: javax.jdo.JDODataStoreException: Put request failed : INSERT INTO `TABLE_PARAMS` (`PARAM_VALUE`,`TBL_ID`,`PARAM_KEY`) VALUES (?,?,?) NestedThrowables: org.datanucleus.store.mapped.exceptions.MappedDatastoreException: INSERT INTO `TABLE_PARAMS` (`PARAM_VALUE`,`TBL_ID`,`PARAM_KEY`) VALUES (?,?,?) FAILED: Execution Error, return code 1
  • Hive中语法规则大全,建议收藏
    Hive 一、创建/删除/修改/使用数据库 # 创建数据库 CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)]; # 删除数据库 DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE]; # 修改数据库 ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...); ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role; ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path; # 使用数据库 USE database_name; USE DEFAULT; 二、创建/删除/截断表 1.创建表 # 建表语法大全 CREATE [EXTERNAL] TABLE [IF
  • 大数据之hive(尚硅谷)Hive基本概念,hive数据结构,hiveDDL定义语言
    文章目录 Hive基本概念优点缺点Hive架构hive与数据库比较 hive数据类型Hive DDL 定义语言创建数据库:查询数据库创建表管理表:外部表管理表与外部表的互相转换 分区表分区表基本操作分区表注意事项 修改表重命名表增加、修改和删除表分区增加/修改/替换列信息 Hive基本概念 Hive:由Facebook开源用于解决海量结构化日志的数据统计。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。本质是:将HQL转化成MapReduce程序 1)Hive处理的数据存储在HDFS 2)Hive分析数据底层的实现是MapReduce 3)执行程序运行在Yarn上 优点 操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。避免了去写MapReduce,减少开发人员的学习成本。Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。 缺点 Hive的HQL表达能力有限 迭代式算法无法表达数据挖掘方面不擅长, Hive的效率比较低 Hive自动生成的MapReduce作业,通常情况下不够智能化Hive调优比较困难,粒度较粗 Hive架构 用户接口
  • HiveQL: 数据定义
    文章目录 1. Hive 数据库2. 修改数据库3. 创建表3.1 管理表3.2 外部表 4. 分区表、管理表5. 删除表6. 修改表 1. Hive 数据库 create database DBname; hive (default)> show databases; OK default hive Time taken: 0.023 seconds, Fetched: 2 row(s) hive (default)> create database students; OK Time taken: 0.066 seconds hive (default)> show databases; OK default hive students Time taken: 0.016 seconds, Fetched: 3 row(s) create database if not exists students; 如果存在同名的表,不会报错(对于连续执行很有用,不会中断) hive (default)> create database students; FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Database students already exists
  • Hive 侧视图创建
    HDFS文件路径: /users/userfriends/user_friends.csv csv文件数据如下: 创建外部表(ods) 去除首行,字段间按照“,”分割。 create external table if not exists dwd_user_friends ( userid string, friends string ) row format delimited fields terminated by ',' //字段按 ',' 分割 location '/users/userfriends' tblproperties ("skip.header.line.count=1") //跳过第一行数据 ====================数据如下=========================== userid friends 3197468391 1346449342 3873244116 4226080662 1222907620 547730952 1052032722 3537982273 1491560444 395798035 2036380346 899375619 3534826887 3427911581 创建侧视图 实现一行数据记录一个user及其一个firend。 语法:lateral view explode //语法 select
  • hive常用语法
    hive基本操作 #查看数据库 show databases #查看表信息 show tables #查看分区 show partitions #查看函数 show functions #查看详细信息 (格式模糊) desc extended t_tablename; #查看详细信息 (格式清晰) desc formatted t_tablename; #删除库 drop database test ; #强制删除库 drop database test cascade; - ***修改表名: alter table t_old_tables rename to t_new_tables; ***修改分区名: alter table t_school partition(province ='sx',city ='ty') rename to partition(province='gd',city ='sz'); ***添加分区: alter table t_school add partition (province='beijing',city='chaoyang'); ***删除分区: alter table t_school drop partition (province='sx',city='yc'); ***修改表的文件格式定义: alter table t
  • hive拉链表详解
    新增及变化数据 如下图所示,2020-01-01为初始化数据,在2020-01-02的时候jacky约增加了500,数据库里又新增了lucy这个新用户。对于数据仓库来说jacky就是变化的数据,lucy就是新增的数据。 如何将新增以及变化的数据导入数据仓库 如果在不占用过多空间的情况下,又能在保留历史数据的同时,体现最新的状态,拉链表是一个不错的选择 什么是拉链表 如下图所示,前一日全量数据和当日新增以及变化的数据合并形成一张新的全量表,就像是拉链的形状。 如何实现 如下图所示,user_info从ods层进入dwd层的时候增加两个字段,start_date为生效日期,end_date为失效日期,当end_date为9999-12-31的时候表示为最新数据 应用场景 一般用户表或者订单表使用拉链表的情况比较多,根据end_date可以追溯每个用户信息或者订单状态的修改状况 实例应用 创建三个 用户表 --ods层用户表 CREATE external TABLE `user.ods_user_info` ( `id` bigint COMMENT '主键', `name` string COMMENT '名字', `banlance` double COMMENT '余额', `create_time` string COMMENT '创建时间', `modify_time`
  • Dynamically create Hive external table with Avro schema on Parquet Data
    I'm trying to dynamically (without listing column names and types in Hive DDL) create a Hive external table on parquet data files. I have the Avro schema of underlying parquet file. My try is to use below DDL: CREATE EXTERNAL TABLE parquet_test ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' STORED AS PARQUET LOCATION 'hdfs://myParquetFilesPath' TBLPROPERTIES ('avro.schema.url'='http://myHost/myAvroSchema.avsc'); My Hive table is successfully created with the right schema, but when I try to read the data : SELECT * FROM parquet_test; I get the following error : java.io