草庐IT

hadoop - 使用 lazy simple serde hive 替换引号

您好,我正在处理许多在数据中包含引号的文件,如下所示。“ID”|“学生”|“年级”“123”|“约翰”|“9.7”“132”|“约翰尼”|“8.7”“143”|“罗尼”|“8.17”我想从数据中删除引号,你能告诉我怎么做吗?如果完全使用任何内置的serdes将会有所帮助。因为我正在处理很多这样的文件。 最佳答案 将此数据原样加载到临时配置单元表中。然后在插入表时使用regex_replace()函数。步骤:将数据加载到具有类似架构的临时表中。使用regex_replace()将覆盖插入最终表。insertoverwritetable

hadoop - 无法将数据从 HDFS 加载到 Hadoop 中的 Hive

我是hadoop的新手,处于学习阶段。当我尝试在配置单元中执行以下语句时,empl.txt被移动到垃圾文件夹。loaddatainpath'/user/trnkimz/empl.txt'intotableempl;此外,数据未存储在empl表中。在我的empl表中,我有以下列:e-idint和e_nameString。在我的empl.txt文件中,我有以下数据:1,john2,smith3,alex请建议,这就是我无法将数据从HDFS加载到配置单元表的原因。提前致谢。 最佳答案 首先,您必须检查您的输入文件是在本地还是在hdfs中。

hadoop - Elasticsearch 和 Hive 协同工作

我看到Hive和Elasticsearch几乎等同,只是Elasticsearch支持近乎实时的查询。此外,Elasticsearch可以独立运行来存储和分析数据。那么为什么人们在Hadoop上同时使用Hive和Elasticsearch? 最佳答案 Hive和Elasticsearch是两种截然不同的工具。Hive是一个SQL到HadoopJava的翻译器,它使用SerDe与几乎任何使用SQL(包括Elasticsearch)的数据源进行交互。Hive还可以使用HDFS存储数据。Hive非常擅长批处理。Elasticsearch是

hadoop - Hive 宏未返回预期结果

我正在使用Hive临时宏来帮助处理日期代数(在这种情况下查找前一个月的第一天),但我得到了意想不到的结果。createtemporarymacromonth1st_sub(dtdate)cast(concat(casewhenmonth(dt)=1thencast(year(dt)-1asstring)elsecast(year(dt)asstring)end,"-",casewhenmonth(dt)=1then"12"elsecast(month(dt)-1asstring)end,"-01")asdate);当我使用包含max_dt(8-15-2014)单个值的vars表测试此宏

performance - 在 Hive 中使用 UDF 连接两个大表 - 性能太慢

我在配置单元中有两个表。一个有大约200万条记录,另一个有1400万条记录。我加入了这两张table。我也在WHERE子句中应用UDF。执行JOIN操作花费太多时间。我已经尝试多次运行查询,但它运行了大约2小时,我的reducer仍然保持在70%,之后我得到异常"java.io.IOException:Nospaceleftondevice"job被杀死了。我试过如下设置参数:setmapreduce.task.io.sort.mb=256;setmapreduce.task.io.sort.factor=100;setmapreduce.map.output.compress=tru

sql - 从 Hive 中的计数中获取百分比

我有一个表格如下:COL1COL2DATETIMESTAMPCATEGORY1CATEGORY2e-121101201408110525ArtsandEntertainmentTelevisione-121101201408110525ArtsandEntertainmentTelevisione-121101201408110525ArtsandEntertainmentTelevisione-121101201408110620TechnologyandComputingInternetTechnologye-121101201408110705TechnologyandCompu

hadoop - 在 Hive 中使用自定义 UDF 的 LeaseExpiredException

我有一个HiveUDF,它应该从UA字符串中提取设备。它使用ua-parser库:https://github.com/tobie/ua-parserUDF相当简单:publicclassDeviceTypeExtractTestextendsUDF{privateTextresult=newText();privatestaticfinalParseruaParser;static{try{uaParser=newParser();}catch(IOExceptione){thrownewRuntimeException("CouldnotinstantiateUser-Agentp

hadoop - 从 Presto HIVE_CURSOR_ERROR 中的表中获取数据时出错

我们在单节点服务器上使用Prestodb(0.69)和客户端。在我们使用Hive目录的地方,表采用ORC格式,包含350,000,000行。在运行查询“selectcolumn1fromORC_Table1wherecolumn2=123456789”时,我们收到HIVE_CURSOR_ERROR。column2的数据类型是“int”下面是错误堆栈:-"failures":[{"type":"com.facebook.presto.spi.PrestoException","message":"ReadpastendofRLEintegerfromcompressedstreamStr

hadoop - 如何按顺序运行 Hue Hive 查询

我已经设置了ClouderaHue并且有一个200Gib和16GibRAM的主节点集群和3个数据节点,每个150Gib和8GibRam。我有大约70Gib大小的数据库。问题是当我尝试从配置单元编辑器(HUEGUI)运行Hive查询时。如果我提交5到6个查询(用于执行),作业会启动,但它们会挂起并且永远不会运行。如何按顺序运行查询。我的意思是,即使我可以提交查询,但新查询应该只在上一个查询完成后才开始。有什么方法可以让查询一个一个地运行吗? 最佳答案 您可以一次运行所有查询,并使用“;”分隔它们在HUE中。例如:查询1;查询2;查询3

join - 优化加入 HIVE 查询 : c

我想知道哪一个是优化HIVE(0.12)查询连接这三个可能候选者中的两个表的最佳方法(并且可能理解为什么):SELECT*FROMajoinbON(a.id=b.id)WHEREb.dt="2014-09-01";或SELECT*FROMaJOINbON(a.id=b.idANDb.dt="2014-09-01");或SELECT*FROMaJOIN(SELECT*FROMbwheredt="2014-09-01")cONa.id=c.id;我无法控制表的存储和分区方式,所以我的问题更多是关于一般最佳实践优于特定案例。我确定a.id=b.id只有在b.dt='2014-09-01'时才