相关疑难解决方法(0)

在进行多个连接时,MySQL不正确的tmp表密钥文件

我不经常来这里寻求帮助,但我对此非常沮丧,我希望有人以前遇到过它.

每当我尝试使用多个连接从表中获取记录时,我都会收到此错误:

#126 - Incorrect key file for table '/tmp/#sql_64d_0.MYI'; try to repair it
Run Code Online (Sandbox Code Playgroud)

所以这个查询会产生错误:

SELECT * FROM `core_username`
INNER JOIN `core_person` ON (`core_username`.`person_id` = `core_person`.`id`)
INNER JOIN `core_site` ON (`core_username`.`site_id` = `core_site`.`id`)
ORDER BY `core_username`.`name` ASC LIMIT 1
Run Code Online (Sandbox Code Playgroud)

但是这个不会:

SELECT * FROM `core_username`
INNER JOIN `core_person` ON (`core_username`.`person_id` = `core_person`.`id`)
ORDER BY `core_username`.`name` ASC LIMIT 1
Run Code Online (Sandbox Code Playgroud)

这一个也不会:

SELECT * FROM `core_username`
INNER JOIN `core_site` ON (`core_username`.`site_id` = `core_site`.`id`)
ORDER BY `core_username`.`name` ASC LIMIT 1
Run Code Online (Sandbox Code Playgroud)

可能是什么导致了这个?我真的不知道如何修复tmp表,但我不认为这是问题,因为它每次都是一个新的tmp表.用户名表相当大(现在有233,718条记录),但我怀疑它与它有什么关系.

任何帮助将非常感激.

更新:经过一些进一步的测试后,似乎错误只发生在我尝试订购结果时.也就是说,这个查询会给我我的期望:

SELECT …
Run Code Online (Sandbox Code Playgroud)

mysql sql mysql-error-126

57
推荐指数
4
解决办法
9万
查看次数

AWS EMR上的奇怪火花错误

我有一个非常简单的PySpark脚本,它从S3上的一些拼花数据创建一个数据帧,然后调用count()方法并打印出记录数.

我在AWS EMR集群上运行脚本,我看到以下奇怪的WARN信息:

17/12/04 14:20:26 WARN ServletHandler: 
javax.servlet.ServletException: java.util.NoSuchElementException: None.get
    at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:489)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
    at org.spark_project.jetty.servlet.ServletHolder.handle(ServletHolder.java:845)
    at org.spark_project.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1689)
    at org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter.doFilter(AmIpFilter.java:164)
    at org.spark_project.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1676)
    at org.spark_project.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)
    at org.spark_project.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
    at org.spark_project.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
    at org.spark_project.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
    at org.spark_project.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.spark_project.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:461)
    at org.spark_project.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)
    at org.spark_project.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
    at org.spark_project.jetty.server.Server.handle(Server.java:524)
    at org.spark_project.jetty.server.HttpChannel.handle(HttpChannel.java:319)
    at org.spark_project.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)
    at org.spark_project.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
    at org.spark_project.jetty.io.FillInterest.fillable(FillInterest.java:95)
    at org.spark_project.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
    at org.spark_project.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
    at org.spark_project.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
    at org.spark_project.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
    at org.spark_project.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
    at org.spark_project.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.NoSuchElementException: None.get
    at scala.None$.get(Option.scala:347)
    at scala.None$.get(Option.scala:345)
    at org.apache.spark.status.api.v1.MetricHelper.submetricQuantiles(AllStagesResource.scala:313) …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-emr apache-spark pyspark

23
推荐指数
2
解决办法
4607
查看次数

Spark查询运行速度很慢

我在AWS上有一个集群,有2个从属和1个主服务器.所有实例都是m1.large类型.我正在运行Spark 1.4版本.我正在对来自红移的4米数据的火花性能进行基准测试.我通过pyspark shell发出了一个查询

    df = sqlContext.load(source="jdbc", url="connection_string", dbtable="table_name", user='user', password="pass")
    df.registerTempTable('test')
    d=sqlContext.sql("""

    select user_id from (

    select -- (i1)

        sum(total),

        user_id

    from

        (select --(i2)

            avg(total) as total,

            user_id

        from

                test

        group by

            order_id,

            user_id) as a

    group by

        user_id

    having sum(total) > 0

    ) as b
"""
)
Run Code Online (Sandbox Code Playgroud)

当我执行d.count()时,上面的查询在df未缓存时需要30秒,df在内存中缓存时需要17秒.

我期待这些时间接近1-2秒.

这些是我的火花配置:

spark.executor.memory 6154m
spark.driver.memory 3g
spark.shuffle.spill false
spark.default.parallelism 8
Run Code Online (Sandbox Code Playgroud)

rest设置为默认值.任何人都能看到我在这里失踪的东西吗?

apache-spark apache-spark-sql pyspark

11
推荐指数
1
解决办法
6758
查看次数

Spark是否有关于RDD的最佳分区数量及其元素数量的经验法则?

包含RDD的元素数量与理想的分区数量之间是否存在任何关系?

我有一个拥有数千个分区的RDD(因为我是从一个由多个小文件组成的源文件加载它,这是一个我无法解决的约束所以我必须处理它).我想重新分区(或使用coalesce方法).但我事先并不知道RDD将包含的确切事件数.
所以我想以自动化的方式做到这一点.看起来像:

val numberOfElements = rdd.count()
val magicNumber = 100000
rdd.coalesce( numberOfElements / magicNumber)
Run Code Online (Sandbox Code Playgroud)

关于RDD的最佳分区数量及其元素数量是否有任何经验法则?

谢谢.

partitioning apache-spark apache-spark-sql

7
推荐指数
1
解决办法
4003
查看次数

与csv文件相比,将mysql表转换为spark数据集的速度非常慢

我在亚马逊s3中有csv文件,大小为62mb(114000行).我正在将其转换为spark数据集,并从中获取前500行.代码如下;

DataFrameReader df = new DataFrameReader(spark).format("csv").option("header", true);
Dataset<Row> set=df.load("s3n://"+this.accessId.replace("\"", "")+":"+this.accessToken.replace("\"", "")+"@"+this.bucketName.replace("\"", "")+"/"+this.filePath.replace("\"", "")+"");

 set.take(500)
Run Code Online (Sandbox Code Playgroud)

整个操作需要20到30秒.

现在我尝试相同但是使用csv我正在使用带有119 000行的mySQL表.MySQL服务器在亚马逊ec2.代码如下;

String url ="jdbc:mysql://"+this.hostName+":3306/"+this.dataBaseName+"?user="+this.userName+"&password="+this.password;

SparkSession spark=StartSpark.getSparkSession();

SQLContext sc = spark.sqlContext();

DataFrameReader df = new DataFrameReader(spark).format("csv").option("header", true);
Dataset<Row> set = sc
            .read()
            .option("url", url)
            .option("dbtable", this.tableName)
            .option("driver","com.mysql.jdbc.Driver")
            .format("jdbc")
            .load();
set.take(500);
Run Code Online (Sandbox Code Playgroud)

这需要5到10分钟.我在jvm里面运行火花.在两种情况下使用相同的配置.

我可以使用partitionColumn,numParttition等但我没有任何数字列,还有一个问题是我不知道该表的模式.

我的问题不是如何减少所需的时间,因为我知道在理想情况下火花将在集群中运行,但我无法理解的是为什么在上述两种情况下这个大的时间差异?

java mysql jdbc amazon-s3 apache-spark

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