草庐IT

java - 没有选择子句的 Hadoop 插入

我是Hadoop新手,我需要在表中插入一条记录,当我搜索语法时,插入语句的每个位置都有来自select语句的值。有没有一种方法可以不使用Select语句来插入简单的值?问候,萨提斯。 最佳答案 首先,我猜测我们正在谈论的标签是HIVE。当您真正使用配置单元时,您永远不会有理由一次添加一个条目。我认为最简单的方法是先用您的数据创建一个CSV文件。sample.csvDan,50Dave,20Sam,30然后我们把文件放到hdfs中hadoopfs-copyFromLocal./sample.csv/user/me/sample.csv

hadoop - 用于日志的 Snappy 或 LZO,然后由 hadoop 使用

我有大量服务。我记录事件。每隔几分钟,我使用gzip压缩日志并将它们旋转到S3。从那里,我们通过Hive使用Amazon的Hadoop(elasticmapreduce)处理日志。现在在服务器上,当我们压缩和旋转日志时,每隔几分钟就会出现CPU峰值。我们想从gzip切换到lzo或snappy以帮助减少这种cpu峰值。我们是一个受CPU限制的服务,因此我们愿意用更大的日志文件换取轮换时消耗的更少的CPU。我一直在阅读大量有关LZO和Snappy(又名zippy)的资料。LZO的优点之一是它在HDFS中是可拆分的。然而,我们的文件是通过Gzip压缩的~15MB,所以我认为我们不会达到HDF

hadoop - Hive gzip文件解压

我已经将一堆.gz文件加载到HDFS中,当我在它们之上创建一个原始表时,我在计算行数时看到了奇怪的行为。将gz表中的count(*)结果与未压缩表中的结果进行比较,结果相差约85%。压缩文件gz的表记录较少。有人见过这个吗?CREATEEXTERNALTABLEIFNOTEXISTStest_gz(col1string,col2string,col3string)ROWFORMATDELIMITEDLINESTERMINATEDBY'\n'LOCATION'/data/raw/test_gz';selectcount(*)fromtest_gz;result1,123,456selec

sql - 如何将SQL数据加载到Hortonworks中?

我已经在我的电脑上安装了HortonworksSandBox。还尝试使用CSV文件并将其以表结构方式获取(Hive+Hadoop),nw我想将我当前的SQL数据库迁移到沙箱(MSSQL2008r2)中。我将如何做到这一点?还想连接到我的项目(VS2010C#)。是否可以通过ODBC连接?我听说sqoop用于将数据从SQL传输到Hadoop,那么我如何使用sqoop进行此迁移? 最佳答案 您可以编写自己的作业来迁移数据。但Sqoop会更方便。为此,您必须downloadSqoop和相应的连接器,在您的案例中是适用于ApacheHado

php - 在 PHP 中通过 Hive/Thrift 查询数据库不起作用

我正在尝试通过PHP中的Hive/Thrift查询数据库。但是,我不断收到错误消息:TSocket:timedoutreading4bytesfromXYZ我正在使用来自的代码https://cwiki.apache.org/Hive/hiveclient.html#HiveClient-PHP连同这个PHPThrift客户端https://github.com/garamon/php-thrift-hive-client我的代码:setSendTimeout(30*1000);$socket->setRecvTimeout(30*1000);$transport=newTBuffer

hadoop - 找不到 hadoop 安装 : $HADOOP_HOME must be set or hadoop must be in the path

所以有点背景。我一直在尝试在CentOS6机器上设置Hive。我按照这个Youtube视频的说明操作:http://www.youtube.com/watch?v=L2lSrHsRpOI就我而言,我使用的是Hadoop-1.1.2和Hive0.9.0,本视频中所有标有“mnt”的目录我都将其替换为“opt”,因为这是我所有的hadoop和hive包的位置被打开了。当我到达视频中实际上应该通过“./hive”运行Hive的部分时弹出此错误:"Cannotfindhadoopinstallation:$HADOOP_HOMEmustbesetorhadoopmustbeinthepath"

hadoop - 删除托管(非外部)表时,不会删除 hdfs 上的配置单元文件

当我从Hive交互式命令行删除托管表时,在/user/hive/warehouse/.db中的hdfs上创建的基础文件仍然存在。当我重新创建具有相同名称的表并尝试执行此操作时,这会导致问题INSERTINTOTABLE因为它仍然包含我在最初运行时加载到这些分区(在我的例子中是dt和hr分区)的数据。只有当我使用INSERTOVERWRITETABLE它最终会正确加载数据吗,但我的ETL需要使用INSERTINTOTABLE.有什么想法吗?我正准备创建同一个表但名称不同,或者只是进入并删除hdfs上的内容,但我担心这是否会破坏Metastore或其他东西。最后,我确信它是一个托管表而不是

hadoop - 确认为特定 Hive 表启用了压缩

我需要对一系列表格进行基准测试,有些是压缩的,有些不是。我通过设置压缩:hive>SEThive.exec.compress.output=true;hive>SETmapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;...并使用INSERTOVERWRITE填充表。有没有办法通过命令行(类似于DESCRIBEEXTENDED)确认为特定表启用了输出压缩? 最佳答案 当您执行describeformattedorc_with_compre

hadoop - 配置单元 : How to execute a query from a file and dump the output in hdfs

我可以从sql文件执行查询并将输出存储在本地文件中使用hive-f/home/Prashasti/test.sql>/home/Prashasti/output.csv此外,我可以使用以下方法将配置单元查询的输出存储在hdfs中:insertoverwritedirectory'user/output'select*fromfolders;有什么方法可以从sql文件运行查询并将输出也存储在hdfs中吗? 最佳答案 只需要修改sql文件,将insertoverwritedirectory'user/output'添加到查询的前面。

hadoop - Hive 查询不使用索引

我正在分析使用索引对hive表的影响。我创建了一个包含5列的表(COL1、COL2、COL3、COL4、COL5)并在其中加载了100000行。我还在该表的COL1上创建了一个索引。我在COL1上运行了带有WHERE子句的select*,这是一个索引列。与在创建索引之前运行相同的查询相比,我发现查询运行时间没有任何改进。我对我的选择查询做了一个EXPLAIN,它显示的是TableScan而不是IndexScan,我无法弄清楚为什么它没有使用索引。请帮忙。 最佳答案 可以查看this和this但基本上是这样的;创建索引在表中创建索引.