【发布时间】:2018-10-20 12:23:00
【问题描述】:
我得到 log4j 格式的日志,处理它们并将它们存储在 Spark 中。我不在集群或多节点环境中。使用 Spark 作为单节点应用程序。我只是 spark 的初学者,通过编写应用程序来学习概念。我使用 Spark 作为后端而不是 DB(MySQL),因此处理速度比 DB(数百万条记录)快得多。我希望这很好。
使用 Spark SQL,尝试通过以下查询获取记录。
qry = qry + " error LIKE '%" + errormsg + "%' ";
List<Row> allrows = logDataFrame.filter(qry).collectAsList();
目前 Spark 拥有 100 万条记录。此查询需要 6 秒 来获取 1000 条记录。
这是 Spark 的错误用法吗?我不这么认为,这是 spark 必须处理记录并尽快获取记录的地方。如果我的理解有误,请纠正我。
我很困惑为什么要花这么长时间来获取记录。
我是否需要调整 Spark 或其他任何配置?请提出建议。
在错误模式下使用我的应用程序:
SparkContext sc = spark.sparkContext();
sc.setLogLevel("ERROR");
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql spark-dataframe spark-streaming