:您超出了PySpark中的费率限额错误/

时间:2018-08-30 07:25:03

标签: apache-spark ibm-cloud rdd pyspark-sql cloudant

我找不到RDD的总和。我是该领域的新手,请帮忙。

使用Python 2.7 Sith spark 2.1 我目前正在使用SQL查询来获取数据帧,然后使用.rdd将其转换为RDD。 即使我使用df.select().rdd

此代码给了我同样的错误:

def meanTemperature(df,spark):
    tempDF = spark.sql("SELECT TEMPERATURE FROM washing").rdd
    return tempDF.sum()

我得到的错误:

     Py4JJavaErrorTraceback (most recent call last)
<ipython-input-40-3c99bf995d59> in <module>()
----> 1 meanTemperature(cloudantdata,spark)

<ipython-input-39-cb1480c78493> in meanTemperature(df, spark)
      4 
      5 
----> 6     return tempDF.sum()

/usr/local/src/spark21master/spark/python/pyspark/rdd.py in sum(self)
   1029         6.0
   1030         """
-> 1031         return self.mapPartitions(lambda x: [sum(x)]).fold(0, operator.add)
   1032 
   1033     def count(self):

/usr/local/src/spark21master/spark/python/pyspark/rdd.py in fold(self, zeroValue, op)
    903         # zeroValue provided to each partition is unique from the one provided
    904         # to the final reduce call
--> 905         vals = self.mapPartitions(func).collect()
    906         return reduce(op, vals, zeroValue)
    907 

/usr/local/src/spark21master/spark/python/pyspark/rdd.py in collect(self)
    806         """
    807         with SCCallSiteSync(self.context) as css:
--> 808             port = self.ctx._jvm.PythonRDD.collectAndServe(self._jrdd.rdd())
    809         return list(_load_from_socket(port, self._jrdd_deserializer))
    810 

/usr/local/src/spark21master/spark/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py in __call__(self, *args)
   1131         answer = self.gateway_client.send_command(command)
   1132         return_value = get_return_value(
-> 1133             answer, self.gateway_client, self.target_id, self.name)
   1134 
   1135         for temp_arg in temp_args:

/usr/local/src/spark21master/spark/python/pyspark/sql/utils.py in deco(*a, **kw)
     61     def deco(*a, **kw):
     62         try:
---> 63             return f(*a, **kw)
     64         except py4j.protocol.Py4JJavaError as e:
     65             s = e.java_exception.toString()

/usr/local/src/spark21master/spark/python/lib/py4j-0.10.4-src.zip/py4j/protocol.py in get_return_value(answer, gateway_client, target_id, name)
    317                 raise Py4JJavaError(
    318                     "An error occurred while calling {0}{1}{2}.\n".
--> 319                     format(target_id, ".", name), value)
    320             else:
    321                 raise Py4JError(

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 2 in stage 18.0 failed 10 times, most recent failure: Lost task 2.9 in stage 18.0 (TID 848, yp-spark-lon02-env5-0105.bluemix.net, executor cd1ff543-2b85-4961-8632-26de9890cbca): com.cloudant.client.org.lightcouch.TooManyRequestsException: 429 Too Many Requests at https://49b92f6e-fb6d-4003-aa11-80280f96591d-bluemix.cloudant.com/washing/_all_docs?include_docs=true&limit=19&skip=38. Error: too_many_requests. Reason: You`ve exceeded your rate limit allowance. Please try again later..
    at com.cloudant.client.org.lightcouch.CouchDbClient.execute(CouchDbClient.java:575)
    at com.cloudant.client.api.CloudantClient.executeRequest(CloudantClient.java:388)
    at org.apache.bahir.cloudant.CloudantConfig.executeRequest(CloudantConfig.scala:73)
    at org.apache.bahir.cloudant.common.JsonStoreDataAccess.getQueryResult(JsonStoreDataAccess.scala:114)
    at org.apache.bahir.cloudant.common.JsonStoreDataAccess.getIterator(JsonStoreDataAccess.scala:62)
    at org.apache.bahir.cloudant.common.JsonStoreRDD.compute(JsonStoreRDD.scala:223)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:326)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:290)
    at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:326)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:290)
    at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:326)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:290)
    at 

请帮助我解决此错误。

1 个答案:

答案 0 :(得分:0)

尽管有错误描述,但这与超限完全无关。错误是我没有忽略null值,而不得不在lambda函数中使用它。我还必须使用x.temperature

访问rdd的列