草庐IT

hadoop - 通过 spark job 创建 hive 表

我正在尝试在hadoop集群(BigInsight4.1发行版)上创建hive表作为我的spark(1.5.1版)作业的输出,但我面临权限问题。我的猜测是spark使用默认用户(在本例中为“yarn”而不是作业提交者的用户名)来创建表,因此未能这样做。我尝试自定义hive-site.xml文件以设置一个经过身份验证的用户,该用户有权创建配置单元表,但这没有用。我还尝试将Hadoop用户变量设置为经过身份验证的用户,但它也没有用。我想避免保存txt文件然后创建配置单元表以优化性能并通过orc压缩减小输出的大小。我的问题是:有什么方法可以调用sparkdataframeapi的write函

hadoop - 将数据从 HDFS 加载到 Hive 时出现问题

场景1:在配置单元中创建表时提供​​自定义位置,然后使用“从本地复制”命令加载数据。下面的过程是直接将数据加载到我的表中。但是当我使用默认位置使用“从本地复制”命令加载数据时,方案2不起作用。因为它执行时没有任何错误,但没有加载我的表。场景1命令的链接---Scenario1Commands--这是将数据加载到表中。Scenario2Commands--将场景1的位置路径替换为默认配置单元路径--但未加载数据。 最佳答案 使用下面的命令找到文件需要复制到的确切位置hive-e'describeformattedEmployee'如果

hadoop - 如何列出 Hive 中所有数据库中所有表中的所有列

我需要列出我的Hive中所有数据库的所有表中的所有列。我需要这样一行:Database.table.columncolumn_typecomment显然我可以使用showdatabases;对于我可以使用的每个数据库showtables;并且对于每个表使用:describetable_name;显然,我可以使用位于我的Postgress数据库中某处的Hive_metastore数据库,但我无法访问那里。但我想要一个bash脚本,它可以遍历数据库->表->列并获取详细信息。我已经开始生成数据库列表:hive-e'showdatabases;'|teedatabases.txt比起我要遍历

hadoop - HIVe - 创建表为 - 从现有表创建 Parquet 表时出错

我使用CTAS从现有表(订单)创建了一个Parquet表(orders_parquet),如下所示:CREATETABLEorders_parquetROWFORMATSERDE'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'STOREDASINPUTFORMAT'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.parquet.MapredParquetO

hadoop - hive 列到行

如何根据存储在现有列中的类型在HIVE中创建新列?例如,我有:idProductType1car2bike3truck我想拥有:idcarbiketruck11nullnull2null1null3nullnull1 最佳答案 Use`case`statementtoconvertvaluesintocolumns:selectid,casewhenProductType='car'then1endascar,casewhenProductType='bike'then1endasbike,casewhenProductType='

hadoop - Presto 不从 Hive Metabase 返回行

我是AWSEMR的新手。我已经启动并运行了Hive,并且可以毫无问题地查询S3中的外部表。我现在已经将Presto安装到EMR集群上,这似乎已启动并正在运行并且可以读取Hive元数据库。但是,我运行的每个查询都会返回列标题,但实际上不会返回任何列(下面的查询)。presto:default>selectcount(*)frompatrequests;_col0-------0(1row)Query20171113_163811_00033_vdw6c,FINISHED,1nodeSplits:17total,17done(100.00%)0:00[0rows,0B][0rows/s,0

hadoop - 使用动态列插入 Hive

我收到的文件中的列是动态的。文件1可以是column1column2column3column4column5column6column7文件2可以column1column2column9column10column11column12column13文件3可以column1column2column3column10column11如何将配置单元表修改为我将随文件一起接收的列。 最佳答案 这会非常困惑,但如果没有任何明确的定界符,您能做的最好的事情就是定义一个RegexSerDe并捕获每个可能的列。您缺少的列基本上是一个可选的捕

sql - 正则表达式替换在 HIVE 中不起作用

我想将数据中的;替换为HIVE中的:尝试了以下但没有工作hive>selectREGEXP_REPLACE('Mozilla/5.0(Macintosh;Intel',';',':');如何在HIVE中实现这一点。我在转换它时遇到问题。 最佳答案 只需使用replace():selectreplace('Mozilla/5.0(Macintosh;Intel',';',':')replace()在文档中描述。 关于sql-正则表达式替换在HIVE中不起作用,我们在StackOverflo

hadoop - 在具有 JSON 数据的 Parquet 文件上创建 Hive 表

我要达到的目标从源大JSON文件中获取数据(employee-sample.json)一个简单的spark应用程序,将其作为文本文件读取并存储在parquet(simple-loader.java)中。我不知道JSON文件中有什么,所以我不能放置任何模式,所以我想要读取模式,而不是写入模式。一个包含一列名为“值”的Parquet文件,其中包含已创建的JSON字符串在parquet文件上创建一个HIVE外部表,当我执行“select*fromtable”时,我看到一列带有JSON数据。我真正需要的是创建一个HIVE表,它可以读取“值”列中的JSON数据并应用架构和发出列,这样我就可以根据

hadoop - hive 获取每个月的结束日期

我想要每个月的最后一个日期,例如1月31日、2月28日,等等。我在下面尝试使用current_date并且它有效但是当我使用我的日期列时它返回null:SELECTdatediff(CONCAT(y,'-',(m+1),'-','01'),CONCAT(y,'-',m,'-','01'))FROM(SELECTmonth(from_unixtime(unix_timestamp(C_date,'yyyyMMdd'),'yyyy-MM-dd'))asm,year(from_unixtime(unix_timestamp(C_date,'yyyyMMdd'),'yyyy-MM-dd'))a