我有一个用例,我需要对来自多个文件的数百万条记录进行模糊匹配.我确定了两种算法:Jaro-Winkler和Levenshtein编辑距离.
当我开始探索两者时,我无法理解两者之间的确切差异.似乎Levenshtein给出了两个字符串之间的编辑数量,而Jaro-Winkler给出了0.0到1.0之间的匹配分数.我不明白算法.由于我需要使用任何一种算法,我需要知道算法性能的确切差异.
我在Hive中实现了一项任务.目前它在我的单节点集群上工作正常.现在我打算在AWS上部署它.
我对AWS一无所知.如果我计划部署它,那么我应该选择Amazon EC2或Amazon EMR?
我想改善我的任务的表现.哪一个更好,更可靠?如何接近他们?我听说我们也可以在AWS上注册我们的VM设置.可能吗?
请尽快建议我.
非常感谢.
实际上我正在编写PIG脚本,并且如果满足其中一个条件,则希望执行一些语句.
我设置了一个变量并检查该变量的某些值.假设
if flag==0 then
A = LOAD 'file' using PigStorage() as (f1:int, ....);
B = ...;
C = ....;
else
again some Pig Latin statements
Run Code Online (Sandbox Code Playgroud)
我可以在PIG脚本中执行此操作吗?如果是,那我该怎么做?
谢谢.
我从MS SQL Server导入了Hive中大约10个表.但是当我尝试在表中的一个表中检查Hive中的记录时,我在运行查询时找到了更多记录(从tblName中选择count(*);).
然后我删除该表并再次将其导入Hive.我在Console Logs中观察到(检索了203条记录).然后我再次尝试(从tblName中选择count(*);)我得到了298的计数.
我不明白为什么会发生这种情况.查询中是否有任何错误,或者由于某些不正确的sqoop-import命令而发生.
所有其他表记录都没问题.
请帮我解决这个问题.
下面是我使用SimpleDateFormat模式解析日期的代码:
String pattern = "yyyy-MM-dd";
SimpleDateFormat format = new SimpleDateFormat(pattern);
try {
Date date = format.parse("05-21-2030");
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
您可以看到我传递给解析的日期与SimpleDateFormat中指定的日期格式不同.在这种情况下,由于格式不同,我希望有一种解雇,但它使用一些不同的日期值成功解析.我得到了输出 - Tue Mar 22 00:00:00 IST 12
当我传递相同的格式,如2030-05-21,它工作正常.
你能告诉我如何在我的代码中阻止这些事情吗?
我正在尝试使用JDBC(如SQL中的存储过程)在Java中实现任务.在SQL中,当我们编写游标时,首先执行select查询然后获取我们执行某些操作的记录.
可能我在Hive中解雇了一个select查询.
sql="SELECT a,c,b FROM tbl_name";
res=stmt.executeQuery(); -----------> CONTAINS 30 RECORDS
while(res.next())
{
sql="INSERT INTO table .....";
rs1=stmt.executeQuery();
sql="SELECT d,e,f FROM table .....";
rs1=stmt.executeQuery();
like wise many queries are there.....
.
.
.
..
}
Run Code Online (Sandbox Code Playgroud)
由于我的选择查询包含30条记录,但当我执行它时,我(while.inxt())只执行一次.
但是我只是尝试显示字段以检查它是否正在获取,而不是查询,然后它正常工作..(while循环只包含System.out.println语句)
sql="SELECT * FROM tbl_name";
res=stmt.executeQuery(sql);
while(res.next())
{
S.O.P.("fields : "+res.getString(0));
}
Run Code Online (Sandbox Code Playgroud)
(我认为当结果集被遍历时,如果查询之间存在,那么查询将被执行但同时循环也会执行,并且在查询执行结束后的一段时间之后,reslutset的循环也会完成并且因此它会执行一次.我不确定.)
为什么会这样,我没有得到.我做错了什么?
1)我从最近2个月开始使用蜂巢.我和SQL中的任务相同.我发现Hive很慢并且需要更多时间来执行查询,而SQL在几分钟/秒内执行查询.
在Hive中执行任务后,当我在两者(SQL和Hive)中交叉检查结果时,我发现结果有些不同(并非在所有表中都有).例如:我有一张表有2012年的记录,当我在Hive的Hive中执行任务时,我得到了2007年的记录.
为什么会这样?
2)如果我想加速我在Hive中的执行,那么我该怎么做呢?(目前我只在单个集群上执行所有这些东西.如果我想增加集群,那么我需要多少集群才能提高性能)
请建议我一些解决方案或一些好的做法,以便我能够敏锐地做到这一点.
谢谢.
我问了一些关于提高 Hive 查询性能的问题。一些答案与映射器和化简器的数量有关。我尝试了多个映射器和化简器,但在执行过程中没有发现任何差异。不知道为什么,可能是我没有以正确的方式去做,或者我错过了别的东西。
我想知道是否可以并行执行 Hive 查询?我的意思是,通常查询在队列中执行。例如:query1
查询2
查询3
. . . n
执行时间太长,我想减少执行时间。
我需要知道我们是否在 Hive JDBC 程序中使用 mapreduce 程序,那么是否可以并行执行它?不知道这是否可行,但这是我要实现的目标?
我在下面恢复我的问题:
1) 如果可以并行运行多个 Hive 查询,是否需要多个 Hive Thrift Server?
2) 是否可以打开多个 Hive Thrift 服务器?
3)我认为不可能在同一个端口上打开多个 Hive Thrift Server?
4) 我们可以在不同的端口上打开多个 Hive Thrift Server 吗?
请为此建议我一些解决方案。如果您有任何其他选择,我也会尝试。
When I run enter the query on Hive CLI, I get the errors as below:
Run Code Online (Sandbox Code Playgroud)
**$ bin/hive -e "insert overwrite table pokes select a.* from invites a where a.ds='2008-08-15';"**
Run Code Online (Sandbox Code Playgroud)
总MapReduce作业= 1启动作业1中的1个reduce任务数设置为0,因为没有reduce操作员Starting Job = job_201111291547_0013,Tracking URL = http:// localhost:50030/jobdetails.jsp?jobid = job_201111291547_0013 Kill Command = C:\ cygwin\home\Bhavesh.Shah\hadoop-0.20.2/bin/hadoop job -Dmapred.job.tracker = localhost:9101 -kill job_201111291547_0013 2011-12-01 14:00:52,380 Stage-1 map = 0 %,reduce = 0%2011-12-01 14:01:19,518 Stage-1 map = 100%,reduce = 100%Ended Job = job_201111291547_0013,有错误FAILED:Execution Error,返回代码2来自org.apache.hadoop.hive .ql.exec.MapRedTask
所以我的问题是如何停止工作?在这种情况下,作业是:job_201111291547_0013请帮助我,以便我可以删除这些错误,并尝试下一步.谢谢.
我想根据几个月使用hadoop中的map-reduce来编写文件.如果数据来自1月份,那么数据应该在jan-file中进行,同样每个月应该有单独的文件.
如何在hadoop mapredude中创建此类文件.我正在尝试递归map-reduce但没有得到如何实现它?
请给我一些解决方案.
谢谢.
hive ×5
hadoop ×3
java ×2
mapreduce ×2
algorithm ×1
amazon-ec2 ×1
amazon-emr ×1
apache-pig ×1
date ×1
jaro-winkler ×1
performance ×1
resultset ×1
sql-server ×1
sqoop ×1