小编Ume*_*cha的帖子

194
推荐指数
8
解决办法
30万
查看次数

使用YARN客户端模式时如何防止Spark Executors迷失?

嗨,我有一个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的新手.提前致谢.

hadoop-yarn apache-spark

44
推荐指数
1
解决办法
4万
查看次数

spark.sql.shuffle.partitions的最佳值应该是什么,或者在使用Spark SQL时如何增加分区?

嗨,我实际上使用Spark SQL hiveContext.sql(),它使用查询组,我遇到了OOM问题.因此,考虑将spark.sql.shuffle.partitions200的默认值增加到1000,但它没有帮助.请纠正我,如果我错了,这个分区将共享数据shuffle load,所以分区更少数据保持.请指导我是Spark新手.我正在使用Spark 1.4.0,我有大约1TB的未压缩数据,可以使用hiveContext.sql()group by queries 进行处理.

apache-spark apache-spark-sql

36
推荐指数
2
解决办法
3万
查看次数

如何在排序的链表上应用二进制搜索O(log n)?

最近我在链表上遇到了一个有趣的问题.给出了单独排序的列表,我们必须从该列表中搜索一个元素.

时间复杂度不应超过O(log n).这似乎我们需要在此链表上应用二进制搜索.怎么样?由于链接列表不提供随机访问,如果我们尝试应用二进制搜索算法,它将达到O(n),因为我们需要找到列表的长度并转到中间.

有任何想法吗?

algorithm linked-list binary-search asymptotic-complexity data-structures

35
推荐指数
2
解决办法
5万
查看次数

如何在python中比较两个列表?

如何在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中做到这一点?

python list

34
推荐指数
3
解决办法
13万
查看次数

Java string.split - 由多个字符分隔符组成

我想根据所有可能的分隔符解析整个文件,如逗号,冒号,冒号,句号,空格,hipns等.

假设我有一个假设的字符串"嗨,X怎么样:你呢?" 我应该得到输出数组的项目Hi,X,How,how,are,any和you.

如何在String.split方法中指定所有这些分隔符?

提前致谢.

java regex

26
推荐指数
1
解决办法
6万
查看次数

H2 postgresql模式似乎不适合我

您好我的应用程序访问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查询.

java postgresql jdbc h2

19
推荐指数
1
解决办法
2万
查看次数

如何避免Spark执行器丢失和纱线容器由于内存限制而导致它被杀死?

我有以下代码,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)

memory executors hadoop-yarn apache-spark apache-spark-sql

16
推荐指数
1
解决办法
2万
查看次数

关于使用反射的IllegalAccessException

我试图学习反射,我遇到了这个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)

我不明白发生了什么.有任何想法吗?提前致谢.

java reflection

14
推荐指数
3
解决办法
4万
查看次数

XPath查询如何根据两个属性获取一个属性的值

我想从以下标记中提取名称属性值

<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帮助但是没找到我想要的东西.请帮忙.

xml xpath

12
推荐指数
2
解决办法
3万
查看次数