草庐IT

transform-only

全部标签

java - 在 Hadoop 中链接一个 Reduce-only 作业

我正在使用ControlledJobs在Hadoop2.2.0中实现一个MR作业链。基本架构是这样的:mapper1->reducer1->mapper2->reducer2但是,mapper2是标识。有没有办法可以轻松让reducer1生成key-value-pairs传给reducer2?现在,两轮的作业输出配置如下://setintermediate/mapperoutputjob.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(Text.class);//setreduceroutputjob.setOut

python - 使用 Hive 的 TRANSFORM 命令在 Hadoop 表中写入 python 脚本的输出

我需要在Hive查询中使用python脚本,以便从Hadoop表(mytable1)转换数据并将转换的输出写入另一个表(mytable2),因为我需要的数据在一个复杂的JSON中.转换应该从mytable1中取出1行并在mytable2中写入360行。为了做到这一点,我被建议使用Hive的TRANSFORM命令,它允许在查询中调用python脚本(脚本如下)。我的问题是,当整个运行时,我的输出表中没有任何内容。我理解这个工作流的工作方式是:第一个子查询的输出由标准输入的python脚本读取。然后将转换后的输出写入标准输出(以制表符分隔格式),然后由Hive读回。所以我独立测试了一些元素

java - 在 Java 上使用 Map_only Hadoop 选择函数

我想创建一个简单的函数来选择CSV文件中的非空元组。我曾考虑过作为输入:CSV文件的每一行,如果值不为空,则值接收相同的元组。我的程序如下:importjava.io.IOException;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.IntWritable;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapred.FileInputFormat;importo

python - 如何在 spark 中使用 transform python udf 执行 hql 脚本?

我是通过POC激发和学习的新手。作为此POC的一部分,我正在尝试直接执行hql文件,该文件具有transform关键字以使用pythonudf。我已经在CLI“hive-ffilename.hql”中测试了hql脚本,它工作正常。我在spark-sql中尝试过相同的脚本,但它因hdfspathnotfound错误而失败。我尝试以如下不同的方式提供hdfs路径,但都不起作用"/test/scripts/test.hql""hdfs://test.net:8020/test/scripts/test.hql""hdfs:///test.net:8020/test/scripts/test.

regex - hive SERDE 正则表达式 : Output format - want to use only few of the output Strings

输入文件如下eno::ename::dept::sal101::emp1::comp1::2800000201::emp2::comp2::2800000301::emp3::comp3::3400000401::emp4::comp4::3600000501::emp5::comp5::400000>createtableemp(enamestring,edeptstring)>rowformatserde'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'>WITHSERDEPROPERTIES(>"input.regex"="^([

hadoop - 批处理模式中的 livy 抛出错误 Error : Only local python files are supported: Parsed arguments

我尝试通过提交python文件以批处理模式执行livy但它不起作用,我尝试了两种方法-从本地文件系统运行py文件,同时通过将它复制到那里在hdfs上运行它......但它不工作......请帮忙hduser@tarun-ubuntu:/home/tarun/spark/examples/src/main/python$curl-XPOST-H"Content-Type:application/json"tarun-ubuntu:8998/batches--data'{"file":"file:///home/tarun/spark/examples/src/main/python/pi

hadoop - pig : Select records from a relaltion only if it is present in another relation

我有以下电影数据库的数据集:Ratings:UserID,MovieID,RatingMovies:MovieID,Genre我使用以下方法过滤掉类型为“Action”或“war”的电影:movie_filter=filterMoviesby(genrematches'.*Action.*')OR(genrematches'.*War.*');现在,我必须计算war片或Action片的平均收视率。但是评级存在于评级文件中。为此,我使用查询:movie_groups=GROUPmovie_filterBYMovieID;result=FOREACHmovie_groupsGENERATE

Hadoop MapReduce : Is it possible to only use a fraction of the input data as the input to a MR job?

我的输入数据的关键类是WritableComparable,它以MapFile的形式存在。有没有什么方法可以设置最小和最大键值,并且只将记录传输到键值介于两者之间的映射器? 最佳答案 这是不可能的。因为对于map-reduce作业,我们只是指定输入。我们可以做的一件事是,在映射器中编写一个条件。如果键是黑白最小值和最大值,则只处理键值对并将输出发送到reducer。否则,什么都不做。但即使在这种情况下,我们的map阶段也会处理所有输入,而reduce阶段只会处理我们指定的键范围。更好的方法:当在给定输入上运行map-reduce作业

java - Hadoop : set a variable like hashSet only once so that it can be utilized multiple times in each map task

您好,我有一个HashSet,它需要在hadoop中的每个映射任务中使用。我不想多次初始化它。我听说可以通过在配置函数中设置变量来实现。欢迎提出任何建议。 最佳答案 看来你还没有真正了解Hadoop的执行策略。如果你是分布式模式,你不能在多个map任务中共享一个集合(HashSet)。这是因为任务是在它们自己的JVM中执行的,并且它不是确定性的,即使不使用jvm重用,你的集合在jvm被重置后仍然存在。您可以做的是在计算开始时为每个任务设置一个HashSet。因此您可以覆盖setup(Contextctx)方法。这将在调用映射方法之前

java - 在 reducer 的 for 循环中获取编译错误 "Can only iterate over an array or an instance of java.lang.Iterable"

在reducer的for循环中出现编译错误“Canonlyiterateoveranarrayoraninstanceofjava.lang.Iterable”。publicvoidreduce(Textkey,Iteratorvalues,OutputCollectorOutput,Reporterarg3)throwsIOException{//TODOAuto-generatedmethodstubintsum=0;for(IntWritableval:values){sum+=val.get();在上面的代码中,在“for(IntWritableval:values)”处出现编