草庐IT

algorithm - Hadoop MapReduce - 具有少量键和每个键许多值的 Reducer

Hadoop天生就是为处理大数据而创建的。但是,如果Mappers的输出也很大,太大而无法容纳Reducers内存,会​​发生什么情况?假设我们正在考虑要聚类的大量数据。我们使用一些分区算法,它会找到指定数量的元素“组”(簇),这样一个簇中的元素是相似的,但属于不同簇的元素是不同的。通常需要指定簇数。如果我尝试将K-means实现为最著名的聚类算法,一次迭代将如下所示:映射阶段-将对象分配到最近的质心Reducephase-根据集群中的所有对象计算新的质心但是如果我们只有两个集群会怎样?在那种情况下,大数据集将被分成两部分,并且只有两个键,每个键的值将包含大数据集的一半。我不明白的是-

hadoop - Apache Giraph 中具有复杂值的顶点

我正在尝试将一些包含相关顶点信息的文本文件读入Giraph:每一行都是vertex_idattribute_1attribute_2.....attribute_n其中每个属性都是一个字符串。目标是创建一个顶点,其中所有这些属性都是顶点值的一部分。查找各种输入格式我找不到任何现成的东西,所以我假设我必须从VertexValueInputFormat派生我的顶点输入类(我有一个单独的边阅读器)。问题是:如何?我已经创建了一个包含String[]数组的Value类,但我如何将它交给Giraph/Hadoop?这是单行阅读器:https://giraph.apache.org/giraph-

java - 用于查找最常出现的列值的 Hive UDAF

我正在尝试创建一个HiveUDAF来查找最常出现的列(字符串)值(不是单个字符或子字符串,使用精确的列值)。假设以下是我的名为my_table的表(破折号用于在视觉上分隔列)。User_Id-Item-Count1-A-11-B-11-A-11-A-11-A-11-C-12-C-12-C-12-A-12-C-1假设我调用以下脚本:SelectUser_Id,findFrequent(*)frommy_tablegroupbyUser_Id我应该得到以下输出,因为对于User_Id=1,A出现了4次而B和C只出现了一次。所以,User_Id=1最频繁的是A。同样,User_Id=2最频繁

java - hadoop 中用于多个 double 值的自定义可写类

我正在尝试发出4个数值作为键。我为此编写了自定义可写Comparable类,但我坚持使用compare()方法stackoverflow站点中提到了几种解决方案。但这并没有解决我的问题。我的writableCoparable类是publicclassDimensionWritableimplementsWritableComparable{privatedoublekeyRow;privatedoublekeyCol;privatedoublevalRow;privatedoublevalCol;publicDimensionWritable(doublekeyRow,doubleke

创建一个具有从列表 /组合两个不同词典的摘要值的字典来总结值

我是Python的新手,并使用字典和列表。这是列表detail=[(1,[u'apple',u'2017-07-03T08:03:32Z','boston']),(2,[u'orange',u'2017-07-03T08:58:35Z','NOLOCATION']),(3,[u'grape',u'2017-07-03T12:14:12Z','boston']),(4,[u'cherry',u'2017-07-04T13:16:44Z','newyork']),(5,[u'strawberry',u'2017-07-06T10:56:22Z','sanfrancisco']),(6,[u'plu

csv - 将包含带引号的值的表导出到配置单元中的本地 csv

我正在尝试将表导出到配置单元中的本地csv文件。INSERTOVERWRITELOCALDIRECTORY'/home/sofia/temp.csv'ROWFORMATDELIMITEDFIELDSTERMINATEDBY','ESCAPEDBY'\\'LINESTERMINATEDBY'\n'select*frommytable;问题是一些值包含换行符“\n”,结果文件变得非常困惑。在Hive中导出时,是否有任何方法可以将值括在引号中,以便csv文件可以包含特殊字符(尤其是换行符)? 最佳答案 一种可能的解决方案是使用HiveCS

python - 验证字段值的有效方法 Spark

在将数据保存到hdfs之前,我需要验证数据框中的某些列。我想知道在pyspark1.5.2/python2.7中是否有一种优雅有效的方法来做到这一点例如,假设我有以下数据+-----+---+|a|b|+-----+---+|"foo"|123|+-----+---+我想确保列a的每个值不超过3个字符和列b是.我目前的想法是编写一个执行简单if/else的udf,并返回某个值,然后根据这些结果决定是否使作业失败。但是,对于大量数据,我担心它会很慢或者至少是非常繁重的处理。是否已经有一种完善的方法可以在spark中执行此操作?或者是否有任何流行的策略来做到这一点?我自己找不到关于这个主题

scala - 每个列值的 Spark 计数和百分比异常处理和加载到 Hive DB

在下面的ScalaSpark代码中,我需要找到不同列的计数及其值的百分比。为此,我需要对每一列使用withColumn方法,例如date、usage、payment、dateFinal,usageFinal,paymentFinal。对于每个计算,我都需要使用withColumn来获取总和和聚合。有什么方法可以让我不用写,.withColumn("SUM",sum("count").over()).withColumn("fraction",col("count")/sum("count").over()).withColumn("Percent",col("fraction")*10

sql - 如何在 Hive 中过滤掉具有 NaN 值的行?

我在Hue中运行一个hive表的求和函数,并得到NaN的返回值。这是我的代码:从hivedb.tb1中选择sum(v1);我不知道为什么它会给我一个NaN结果。我检查了我的任何v1值是否为空:select*fromhivedb.tb1wherev1isnull;,结果没有记录有空值。该表有1亿行,所以我无法对每条记录进行手动检查。有人知道我为什么会得到NaN结果吗?如果是因为我在某些行中有一些异常值,我该如何找到它们?感谢任何帮助。提前致谢!更新1我手动筛选了前1000行,幸运地在tb1中发现了一些异常的NaN值。这是由于前面步骤的一些舍入误差造成的。所以我的问题1可能得到了回答。如果

java - Hadoop:无需 Writable 接口(interface)即可将对象作为输出值的简单方法

我正在尝试利用hadoop来训练多个模型。我的数据足够小,可以放入内存,所以我想在每个maptask中训练一个模型。我的问题是,当我完成模型训练后,我需要将它发送到reducer。我正在使用Weka来训练模型。我不想开始寻找如何在Weka类中实现Writable接口(interface),因为它需要很多努力。我正在寻找一种简单的方法来做到这一点。Weka中的Classifier类实现了Serializable接口(interface)。我怎样才能将这个对象发送到reducer?edits这是提到weka对象序列化的链接:http://weka.wikispaces.com/Serial