草庐IT

sql - 在 Hive SQL 中引用计算列的输出

我在Excel中有一个自引用/递归计算需要移动到HiveSQL。基本上,仅当具体列的总和加上先前计算的结果大于0时,该列才需要对两个值进行SUM。数据如下,A为值,B为预期输出:|A|B||-----|-----||-1|0||2|2||-2|0||2|2||2|4||-1|3||2|5|在Excel中,它将在B列中写为:=MAX(0,B1+A2)SQL中的问题是你需要有当前计算的输出。我想我已经用SQL将其排序如下:DECLARE@NumbersTABLE(AINT,RnINT)INSERTINTO@NumbersVALUES(-1,1),(2,2),(-2,3),(2,4),(2,

java - 用于散列的 Hadoop Map Reduce 程序

我在Hadoop中编写了一个MapReduce程序,用于对文件的所有记录进行哈希处理,并将哈希值作为附加属性附加到每条记录,然后输出到Hadoop文件系统这是我写的代码publicclassHashByMapReduce{publicstaticclassLineMapperextendsMapper{privateTextword=newText();publicvoidmap(Textkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{key.set("single")Stringline=valu

hadoop - 如何(仅)按时间戳列的一部分对配置单元表进行分区?

假设我有一个Hive表,其中包含一个TIMESTAMP列,该列经常(几乎总是)包含在查询的WHERE子句中。通过TIMESTAMP字段对该表进行分区是有意义的;但是,为了保持合理的基数,按天进行分区(而不是按TIMESTAMP的最大分辨率)是有意义的。实现此目标的最佳方法是什么?我应该在上面创建一个额外的列(DATE)和分区吗?或者有没有办法在不创建重复列的情况下实现分区? 最佳答案 它不是一个新列,而是一个伪列,您应该重新创建您的表并添加分区规范,如下所示:createtabletable_name(idint,namestrin

java - Hive NVL 不适用于列的日期类型 - NullpointerException

我在HDFS上使用MapRHive分发并面临以下问题。如果表的列类型是“日期”类型,则NVL功能不起作用。这同样适用于其他数据类型。它只是抛出NullpointerException:Null甚至解释函数也抛出相同的异常。请在这里帮忙。是Hive发行版中的错误吗? 最佳答案 我自己用变通方法解决了这个问题:对于Date类型,您可以使用hiveCOALESCE函数,如下所示:COALESCE(nt.assess_dt,cast('9999-01-01'asdate))上面的答案可以解释为:找到nt.assess_dt(这是一个date

date - Hive - 来自时间戳列的月份和年份

您好,我正在尝试使用以下查询提取hive中时间戳列的月份和年份部分selectfrom_unixtime(unix_timestamp(upd_gmt_ts,'yyyyMM'))fromabc.test;输出看起来像2016-05-2001:08:48期望的输出应该是201605感谢任何建议。 最佳答案 我更喜欢使用Hivedate_format()(从Hive1.2.0开始)。它支持JavaSimpleDateFormat模式。date_format()接受日期/时间戳/字符串。所以你的最终查询将是selectdate_forma

hadoop - Hive:无法在具有 100 个或更多分区列的表中插入数据错误:在最大长度为 767 的列 "PART_NAME"中

我正在使用配置单元,我需要创建一个包含“n”个普通列和100个或更多作为分区列的表,并且我能够成功创建该表。现在当我用另一个具有相同模式的表的数据加载该表并且所有列都是非分区列时,我收到这样的错误:FailedwithexceptionMetaException(message:AttempttostorevalueFailedwithexceptionMetaException(message:Attempttostorevalue"c1=v1/c2=v2/c3=v3/....c100=v100"incolumn"PART_NAME"thathasmaximumlengthof767

sql - Hive(查找连续 n 列的最小值)

我在Hive中有一个包含5列的表,即电子邮件、a_first_date、b_first_date、c_first_date、d_first_date。a、b、c、d是用户可以执行的4种不同操作,上表中的4列表示用户执行第一个相应操作的日期。例如,'a_first_date'中的值包含用户执行操作a的日期。输出:我想要的是包含电子邮件的2列,overall_first_date即用户在什么日期执行他的第一个操作?示例表:(假设所有值都是除电子邮件以外的BIGINT类型)电子邮件,a_first_date,b_first_date,c_first_date,d_first_date美国广播

hadoop - 为什么Vertica/InfoBright/GreenPlum等面向列的数据库都在Hadoop上做文章?

提供Hadoop集群并使用该集群将数据提供给Vertica/InfoBright数据仓库有什么意义?所有这些供应商一直在说“我们可以连接Hadoop”,但我不明白这是什么意思。存储在Hadoop中并传输到InfoBright中有什么好处?为什么不将应用程序直接存储在Infobright/VerticaDW中?谢谢! 最佳答案 为什么要组合解决方案?Hadoop有一些很棒的功能(见下面的url)。这些功能虽然不包括允许业务用户运行快速分析。在Hadoop中需要30分钟到几小时才能完成的查询,现在使用Infobright可以在10秒内完

php - 带有 Bootstrap 3 列的 GridView 中的 Wordpress 帖子

我正在尝试实现“博客”页面(index.php)上所有WordPress帖子的3x3GridView。我正在基于Bootstrap3构建网站。因此,循环必须使用PHP创建列和行。我想按行设置它,以便每行重置潜在的高度差异。Bootstrap网格如下所示:contentcontentcontentcontentcontentcontentcontentcontentcontent由于缺乏正确设置循环的PHP技能,我尝试绕过,想出了3倍(修改偏移量):它有明显的缺点:大量不必要的PHP请求/循环按类别、标签等过滤不起作用你能帮我创建PHP循环吗?我发现最相关的问题是this,但列布局有点倾

php - 列的 PostgreSQL 乘法

我有Postgres数据库,我必须像这样逐列相乘:SELECTSUM(column1*column2)ASres(...)结果是0。两列都是real类型。但是乘法运算符在我这样做时效果很好:SELECTSUM(column*100)ASres(...)是否可以在PostgreSQL中使用列进行算术运算? 最佳答案 这个查询工作得很好:SELECTSUM(column1*column2)ASresFROMtbl;如果您的结果res是0,那么您必须:0在一列或两列中,并且至少在一行中没有NULL。0或NULL在每个其他选定行的一列或两列