我有一个20GB的文件和一个400MB的文件,我将每个文件映射到每个项目6个属性.然后我通过创建一个带有部分属性的哈希来创建一个K,V RDD(名字的前2个字母和姓氏的前4个字母).
所以,我现在已经a: RDD[K,V]和b: RDD[K,V]一个公共密钥,所以我想加入他们的行列
a.join(b).map(x=> [check commonality in the attributes]).SaveAsTextFile(fileout)
奇怪的是,我在我的16GB Macbook上运行HDFS,它可以在大约16分钟内运行.当我把它放在每个96GB的3个工作节点集群上时,我会重复FetchFailed异常.
这真的可以归结为我的Mac上的HDFS都是相同的SSD而没有网络IO,还是我还能看到别的东西?
我正在使用Cloudera 5.3.1并在Yarn上运行spark,执行程序日志信息有限,我没有弄清楚如何调整执行程序的日志记录级别以获取更多信息.知道怎么做吗?
下面的示例堆栈;
FetchFailed(null, shuffleId=0, mapId=-1, reduceId=6, message=
org.apache.spark.shuffle.MetadataFetchFailedException: Missing an output location for shuffle 0
at org.apache.spark.MapOutputTracker$$anonfun$org$apache$spark$MapOutputTracker$$convertMapStatuses$1.apply(MapOutputTracker.scala:386)
at org.apache.spark.MapOutputTracker$$anonfun$org$apache$spark$MapOutputTracker$$convertMapStatuses$1.apply(MapOutputTracker.scala:383)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
at org.apache.spark.MapOutputTracker$.org$apache$spark$MapOutputTracker$$convertMapStatuses(MapOutputTracker.scala:382)
at org.apache.spark.MapOutputTracker.getServerStatuses(MapOutputTracker.scala:178)
at org.apache.spark.shuffle.hash.BlockStoreShuffleFetcher$.fetch(BlockStoreShuffleFetcher.scala:42)
at org.apache.spark.shuffle.hash.HashShuffleReader.read(HashShuffleReader.scala:40)
at org.apache.spark.rdd.CoGroupedRDD$$anonfun$compute$2.apply(CoGroupedRDD.scala:137)
at org.apache.spark.rdd.CoGroupedRDD$$anonfun$compute$2.apply(CoGroupedRDD.scala:127)
at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108)
at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:771)
at org.apache.spark.rdd.CoGroupedRDD.compute(CoGroupedRDD.scala:127)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:263)
at org.apache.spark.rdd.RDD.iterator(RDD.scala:230)
at org.apache.spark.rdd.MappedValuesRDD.compute(MappedValuesRDD.scala:31)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:263) …Run Code Online (Sandbox Code Playgroud) 我当前正在创建一个新线程,以检查文件夹中是否有新文件,然后在定义的时间内休眠。
我的首选是使用ScheduledExecutorService,但是我找不到任何文档来阐明该服务在开始新任务之前是否等待当前正在运行的任务完成。
例如,如果我有以下代码;
Integer samplingInterval = 30;
ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(10);
executorService.scheduleAtFixedRate(new WatchAgent(agentInfo), 0, samplingInterval, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)
如果WatchAgent的run()花费的时间超过30秒,是否会在完成之前创建新的代理?
其次,如果创建WatchAgent的实例,是否可以在每次定期运行中继续使用相同的实例?
我正在尝试使用以下代码在 SharePoint 2013 中仅使用 Javascript 添加列表项;
function createListItem() {
var clientContext = new SP.ClientContext.get_current();
var oList = clientContext.get_web().get_lists().getByTitle('CrewNoticesAudit');
var itemCreateInfo = new SP.ListItemCreationInformation();
this.oListItem = oList.addItem(itemCreateInfo);
oListItem.set_item('Title', 'My New Item!');
oListItem.set_item('NoticeId', 1); // THIS IS A LOOKUP VALUE
oListItem.set_item('User', 'administrator');
oListItem.set_item('TimeStamp', new Date());
oListItem.set_item('AuditType', 'Open');
oListItem.update();
clientContext.load(oListItem);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
alert('Item created: ' + oListItem.get_id());
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是 NoticeId 是查看不同列表的查找值。我是否需要做一些不同的事情来设置项目的查找值?
更新:抱歉,破解了。第二个谷歌更有成效。
如果其他人遇到困难,您需要创建一个查找字段。 …
我想测试我为嵌入式系统编写的异常处理程序函数,并想编写一个测试代码来注入对禁止的内存的访问。
void Test_Mem_exception
{
__asm(
"LDR R0, =0xA0100000\n\t"
"MOV R1, 0x77777777\n\t"
"STR R1, [R0,#0]"
);
Run Code Online (Sandbox Code Playgroud)
这是我想在 0xA010000 处写入访问内存位置的代码。不知何故,这对我来说似乎不是一个通用的测试代码。
是否有用 C 或 C++ 编写此类测试代码的标准方法。通用我的意思是一个独立于它运行的系统的内存映射的代码。
我正在处理site.posts以将post.categories与page.categories进行比较,以创建相关的帖子侧边栏,但是如果有多个常见类别,则会获得多个链接。
我想打破内部循环,但找不到任何东西暗示这种可能性。
大概(因为在火车和电话上)我的代码是
{% for post in site.posts %}
{% for postcat in post.categories %}
{% for cat in page.categories %}
{% if cat == postcat %}
<p> {{ post.title }} </p>
{% endif %}
{% endfor %}
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
不确定这是否可行