我必须对表格假设表格一是X,表格二是Z。表Z有一个分区谓词。表X是一个国家/地区表,具有以下字段country_id,country_name表Z包含一些数据,我想将该表的country_id映射到表X。我试过了selectc.country_id,c.country_name,s.sales_id,s.sales_ctry_idfromx_tablecjoinz_tableson(c.country_id=s.sales_ctry_id)但是因为表Z是按日期字段分区的,所以我无法让这个连接工作。有什么建议吗? 最佳答案 您应该使用
我有一个带日期分区的配置单元表。这些日期从2017年1月1日开始。HDFS位置是按日期分区的。我如何创建一个仅考虑来自上述HDFS位置的5个日期的Hive表? 最佳答案 createtablenewtableasselectcolumn1,column2,column3fromoldtablewhereDateStamp>='2017-01-01'andDateStamp 关于hadoop-为子分区创建Hive表,我们在StackOverflow上找到一个类似的问题:
我正在尝试在hadoop集群(BigInsight4.1发行版)上创建hive表作为我的spark(1.5.1版)作业的输出,但我面临权限问题。我的猜测是spark使用默认用户(在本例中为“yarn”而不是作业提交者的用户名)来创建表,因此未能这样做。我尝试自定义hive-site.xml文件以设置一个经过身份验证的用户,该用户有权创建配置单元表,但这没有用。我还尝试将Hadoop用户变量设置为经过身份验证的用户,但它也没有用。我想避免保存txt文件然后创建配置单元表以优化性能并通过orc压缩减小输出的大小。我的问题是:有什么方法可以调用sparkdataframeapi的write函
场景1:在配置单元中创建表时提供自定义位置,然后使用“从本地复制”命令加载数据。下面的过程是直接将数据加载到我的表中。但是当我使用默认位置使用“从本地复制”命令加载数据时,方案2不起作用。因为它执行时没有任何错误,但没有加载我的表。场景1命令的链接---Scenario1Commands--这是将数据加载到表中。Scenario2Commands--将场景1的位置路径替换为默认配置单元路径--但未加载数据。 最佳答案 使用下面的命令找到文件需要复制到的确切位置hive-e'describeformattedEmployee'如果
我需要列出我的Hive中所有数据库的所有表中的所有列。我需要这样一行:Database.table.columncolumn_typecomment显然我可以使用showdatabases;对于我可以使用的每个数据库showtables;并且对于每个表使用:describetable_name;显然,我可以使用位于我的Postgress数据库中某处的Hive_metastore数据库,但我无法访问那里。但我想要一个bash脚本,它可以遍历数据库->表->列并获取详细信息。我已经开始生成数据库列表:hive-e'showdatabases;'|teedatabases.txt比起我要遍历
我使用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
如何根据存储在现有列中的类型在HIVE中创建新列?例如,我有:idProductType1car2bike3truck我想拥有:idcarbiketruck11nullnull2null1null3nullnull1 最佳答案 Use`case`statementtoconvertvaluesintocolumns:selectid,casewhenProductType='car'then1endascar,casewhenProductType='bike'then1endasbike,casewhenProductType='
我是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
我收到的文件中的列是动态的。文件1可以是column1column2column3column4column5column6column7文件2可以column1column2column9column10column11column12column13文件3可以column1column2column3column10column11如何将配置单元表修改为我将随文件一起接收的列。 最佳答案 这会非常困惑,但如果没有任何明确的定界符,您能做的最好的事情就是定义一个RegexSerDe并捕获每个可能的列。您缺少的列基本上是一个可选的捕
我想将数据中的;替换为HIVE中的:尝试了以下但没有工作hive>selectREGEXP_REPLACE('Mozilla/5.0(Macintosh;Intel',';',':');如何在HIVE中实现这一点。我在转换它时遇到问题。 最佳答案 只需使用replace():selectreplace('Mozilla/5.0(Macintosh;Intel',';',':')replace()在文档中描述。 关于sql-正则表达式替换在HIVE中不起作用,我们在StackOverflo