嗨,我有一个Spark作业,本地运行良好,数据较少,但当我在YARN上安排执行时,我继续得到以下错误,慢慢地所有执行程序都从UI中删除,我的工作失败
15/07/30 10:18:13 ERROR cluster.YarnScheduler: Lost executor 8 on myhost1.com: remote Rpc client disassociated
15/07/30 10:18:13 ERROR cluster.YarnScheduler: Lost executor 6 on myhost2.com: remote Rpc client disassociated
Run Code Online (Sandbox Code Playgroud)
我使用以下命令在yarn-client模式下安排spark作业
./spark-submit --class com.xyz.MySpark --conf "spark.executor.extraJavaOptions=-XX:MaxPermSize=512M" --driver-java-options -XX:MaxPermSize=512m --driver-memory 3g --master yarn-client --executor-memory 2G --executor-cores 8 --num-executors 12 /home/myuser/myspark-1.0.jar
Run Code Online (Sandbox Code Playgroud)
我不知道有什么问题请指导.我是Spark的新手.提前致谢.
嗨,我实际上使用Spark SQL hiveContext.sql()
,它使用查询组,我遇到了OOM
问题.因此,考虑将spark.sql.shuffle.partitions
200的默认值增加到1000,但它没有帮助.请纠正我,如果我错了,这个分区将共享数据shuffle load,所以分区更少数据保持.请指导我是Spark新手.我正在使用Spark 1.4.0,我有大约1TB的未压缩数据,可以使用hiveContext.sql()
group by queries 进行处理.
最近我在链表上遇到了一个有趣的问题.给出了单独排序的列表,我们必须从该列表中搜索一个元素.
时间复杂度不应超过O(log n)
.这似乎我们需要在此链表上应用二进制搜索.怎么样?由于链接列表不提供随机访问,如果我们尝试应用二进制搜索算法,它将达到O(n),因为我们需要找到列表的长度并转到中间.
有任何想法吗?
algorithm linked-list binary-search asymptotic-complexity data-structures
如何在python中比较两个列表?
date = "Thu Sep 16 13:14:15 CDT 2010"
sdate = "Thu Sep 16 14:14:15 CDT 2010"
dateArr = [] dateArr = date.split()
sdateArr = [] sdateArr = sdate.split()
Run Code Online (Sandbox Code Playgroud)
现在我想比较这两个列表.我猜split会返回一个列表.我们可以在Java中进行简单的比较dateArr[i] == sdateArr[i]
,但是我们怎样才能在Python中做到这一点?
我想根据所有可能的分隔符解析整个文件,如逗号,冒号,冒号,句号,空格,hipns等.
假设我有一个假设的字符串"嗨,X怎么样:你呢?" 我应该得到输出数组的项目Hi,X,How,how,are,any和you.
如何在String.split方法中指定所有这些分隔符?
提前致谢.
您好我的应用程序访问Postgres数据库,我有许多预定义的查询(排名,分区,复杂的连接等)我对Postgres.现在我想用小测试数据对这些查询行为进行单元测试.所以我从H2/Junit开始.我发现大多数Postgres查询比如Rank,Partition,Complex case等更新等等.所以我想到使用H2 PosgreSQL兼容模式,认为所有的postgres查询都适用于H2,如果我错了请纠正我.
我按照H2文档说使用PostgreSQL模式,使用数据库URL jdbc:h2:〜/ test; MODE = PostgreSQL或SQL语句SET MODE PostgreSQL.
我启用模式使用SET MODE PostgreSQL
,我试图触发一个涉及rank()的查询并在postgres中工作,但它不起作用H2.它给了我以下例外
Function "RANK' not found; in SQL statement
Run Code Online (Sandbox Code Playgroud)
请指导我是H2和数据库测试的新手.提前致谢.我正在使用H2 jdbc驱动程序来解决postgres查询,认为H2 Posgress兼容模式将允许我触发postgres查询.
我有以下代码,hiveContext.sql()
大部分时间都会触发.我的任务是我想创建几个表并在处理完所有hive表分区后插入值.
所以我首先show partitions
在for循环中触发并使用它的输出,我调用一些创建表的方法(如果它不存在)并使用它插入它们hiveContext.sql
.
现在,我们不能hiveContext
在执行程序中执行,所以我必须在驱动程序的for循环中执行它,并且应该逐个串行运行.当我在YARN集群中提交这个Spark作业时,几乎所有的时间我的执行程序都因为shuffle未找到异常而丢失.
现在这种情况正在发生,因为YARN因为内存过载而杀死了我的执行程序.我不明白为什么,因为我为每个hive分区设置了一个非常小的数据集,但它仍然导致YARN杀死我的执行程序.
以下代码是否会并行执行所有操作并尝试同时容纳内存中的所有hive分区数据?
public static void main(String[] args) throws IOException {
SparkConf conf = new SparkConf();
SparkContext sc = new SparkContext(conf);
HiveContext hc = new HiveContext(sc);
DataFrame partitionFrame = hiveContext.sql(" show partitions dbdata partition(date="2015-08-05")");
Row[] rowArr = partitionFrame.collect();
for(Row row : rowArr) {
String[] splitArr = row.getString(0).split("/");
String server = splitArr[0].split("=")[1];
String date = splitArr[1].split("=")[1];
String csvPath = "hdfs:///user/db/ext/"+server+".csv";
if(fs.exists(new Path(csvPath))) {
hiveContext.sql("ADD FILE " + csvPath);
}
createInsertIntoTableABC(hc,entity, …
Run Code Online (Sandbox Code Playgroud) 我试图学习反射,我遇到了这个IllegalAccessException.请参阅以下代码:
public class ReflectionTest
{
public static void main(String[] args)
{
Set<String> myStr = new HashSet<String>();
myStr.add("obj1");
Iterator itr = myStr.iterator();
Method mtd = itr.getClass().getMethod("hasNext");
System.out.println(m.invoke(it));
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行此程序时,我得到以下内容:
Exception in thread "main" IllegalAccessException
Run Code Online (Sandbox Code Playgroud)
我不明白发生了什么.有任何想法吗?提前致谢.
我想从以下标记中提取名称属性值
<application
comments="Do not erase this one"
executable="run_CIET"
icon="default"
instances="1"
mode="1"
name="CIET"
order="10"
selection="1"
tool="y"
/>
Run Code Online (Sandbox Code Playgroud)
我可以根据模式值轻松获取name属性值的值,如下所示
xpath Applications.xml '//applications/application[@mode='3']'/@name
Run Code Online (Sandbox Code Playgroud)
但是,如果我想添加更多的条件,"当模式= X时获取名称属性值,并且应用程序标签中没有工具属性"
我们如何做到这一点?我试过类似的东西
xpath Applications.xml '//applications/application[@mode='3' and !@tool]'/@name
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我之前没有使用XPath,我发现它很棘手我在XPath上搜索W3C帮助但是没找到我想要的东西.请帮忙.
apache-spark ×3
java ×3
hadoop-yarn ×2
python ×2
algorithm ×1
executors ×1
h2 ×1
jdbc ×1
linked-list ×1
list ×1
memory ×1
postgresql ×1
reflection ×1
regex ×1
shell ×1
xml ×1
xpath ×1