J'essaie de séparer le nom du site Web de l'URL. Par exemple, si l'URL est www.google.com, le résultat doit être "google". J'ai essayé le code ci-dessous et tout fonctionne bien sauf la dernière ligne - "websites.collect ()".
J'ai utilisé un cadre de données pour stocker les noms de sites Web, puis l'a converti en un RDD et appliqué une fonction de scission sur les valeurs pour obtenir la sortie requise.
La logique semble bien fonctionner, mais je suppose qu'il y a des erreurs dans la configuration et l'installation de mes paquets.
L'erreur est indiquée ci-dessous: -
---------------------------------------------------------------------------
Py4JJavaError Traceback (most recent call last)
<ipython-input-11-a88287400951> in <module>()
----> 1 websites.collect()
C:\ProgramData\Anaconda3\lib\site-packages\pyspark\rdd.py in collect(self)
822 """
823 with SCCallSiteSync(self.context) as css:
--> 824 port = self.ctx._jvm.PythonRDD.collectAndServe(self._jrdd.rdd())
825 return list(_load_from_socket(port, self._jrdd_deserializer))
826
C:\ProgramData\Anaconda3\lib\site-packages\py4j\Java_gateway.py in __call__(self, *args)
1158 answer = self.gateway_client.send_command(command)
1159 return_value = get_return_value(
-> 1160 answer, self.gateway_client, self.target_id, self.name)
1161
1162 for temp_arg in temp_args:
C:\ProgramData\Anaconda3\lib\site-packages\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()
C:\ProgramData\Anaconda3\lib\site-packages\py4j\protocol.py in get_return_value(answer, gateway_client, target_id, name)
318 raise Py4JJavaError(
319 "An error occurred while calling {0}{1}{2}.\n".
--> 320 format(target_id, ".", name), value)
321 else:
322 raise Py4JError(
Py4JJavaError: An error occurred while calling z:org.Apache.spark.api.python.PythonRDD.collectAndServe.
: Java.lang.IllegalArgumentException
at org.Apache.xbean.asm5.ClassReader.<init>(Unknown Source)
at org.Apache.xbean.asm5.ClassReader.<init>(Unknown Source)
at org.Apache.xbean.asm5.ClassReader.<init>(Unknown Source)
at org.Apache.spark.util.ClosureCleaner$.getClassReader(ClosureCleaner.scala:46)
at org.Apache.spark.util.FieldAccessFinder$$anon$3$$anonfun$visitMethodInsn$2.apply(ClosureCleaner.scala:449)
at org.Apache.spark.util.FieldAccessFinder$$anon$3$$anonfun$visitMethodInsn$2.apply(ClosureCleaner.scala:432)
at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733)
at scala.collection.mutable.HashMap$$anon$1$$anonfun$foreach$2.apply(HashMap.scala:103)
at scala.collection.mutable.HashMap$$anon$1$$anonfun$foreach$2.apply(HashMap.scala:103)
at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:230)
at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:40)
at scala.collection.mutable.HashMap$$anon$1.foreach(HashMap.scala:103)
at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:732)
at org.Apache.spark.util.FieldAccessFinder$$anon$3.visitMethodInsn(ClosureCleaner.scala:432)
at org.Apache.xbean.asm5.ClassReader.a(Unknown Source)
at org.Apache.xbean.asm5.ClassReader.b(Unknown Source)
at org.Apache.xbean.asm5.ClassReader.accept(Unknown Source)
at org.Apache.xbean.asm5.ClassReader.accept(Unknown Source)
at org.Apache.spark.util.ClosureCleaner$$anonfun$org$Apache$spark$util$ClosureCleaner$$clean$14.apply(ClosureCleaner.scala:262)
at org.Apache.spark.util.ClosureCleaner$$anonfun$org$Apache$spark$util$ClosureCleaner$$clean$14.apply(ClosureCleaner.scala:261)
at scala.collection.immutable.List.foreach(List.scala:381)
at org.Apache.spark.util.ClosureCleaner$.org$Apache$spark$util$ClosureCleaner$$clean(ClosureCleaner.scala:261)
at org.Apache.spark.util.ClosureCleaner$.clean(ClosureCleaner.scala:159)
at org.Apache.spark.SparkContext.clean(SparkContext.scala:2292)
at org.Apache.spark.SparkContext.runJob(SparkContext.scala:2066)
at org.Apache.spark.SparkContext.runJob(SparkContext.scala:2092)
at org.Apache.spark.rdd.RDD$$anonfun$collect$1.apply(RDD.scala:939)
at org.Apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
at org.Apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112)
at org.Apache.spark.rdd.RDD.withScope(RDD.scala:363)
at org.Apache.spark.rdd.RDD.collect(RDD.scala:938)
at org.Apache.spark.api.python.PythonRDD$.collectAndServe(PythonRDD.scala:153)
at org.Apache.spark.api.python.PythonRDD.collectAndServe(PythonRDD.scala)
at Java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at Java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at Java.base/Java.lang.reflect.Method.invoke(Unknown Source)
at py4j.reflection.MethodInvoker.invoke(MethodInvoker.Java:244)
at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.Java:357)
at py4j.Gateway.invoke(Gateway.Java:282)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.Java:132)
at py4j.commands.CallCommand.execute(CallCommand.Java:79)
at py4j.GatewayConnection.run(GatewayConnection.Java:214)
at Java.base/Java.lang.Thread.run(Unknown Source)
CODE:-
from pyspark import SparkConf, SparkContext
conf = (SparkConf()
.setMaster("local[*]")
.setAppName("Test")
.set("spark.executor.memory", "8g")
)
sc = SparkContext(conf = conf)
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
schemaWebsite = sc.parallelize([
(0, "www.google.com"), (1, "www.hackerrank.com"),(2, "www.walmart.com/in"),
(3, "www.Amazon.in"),(4, "www.ndtv.com")]).toDF(["id", "ev"])
websites = schemaWebsite.rdd.map(lambda x : x[1].split(".")[1])
websites.collect()
Juste pour faire commenter @Anubhav Sarangi à cette question une réponse: J'ai eu le même problème. Au départ, j'ai installé Java SE 10.0.1. Mais eu une erreur similaire. Suivant la suggestion de @Anubhav Sarangi, j'ai téléchargé et installé le kit de développement Java SE 8u171 qui contient jdk 1.8 et le problème résolu.
J'ai eu le même problème, mais après avoir installé Java SE Development Kit 8u191 et sélectionné Java-8-jdk avec:
Sudo update-alternatives --config Java
il a disparu.