2016-07-26 1 views
0

J'ai spark 1.6 et j'essaie de lire un fichier csv (ou tsv) en tant que trame de données. Voici les mesures que je prends:Lecture de csv comme trame de données dans l'étincelle 1.6

scala> val sqlContext= new org.apache.spark.sql.SQLContext(sc) 
scala> import sqlContext.implicits._ 
scala> val df = sqlContext.read 
scala> .format("com.databricks.spark.csv") 
scala> .option("header", "true") 
scala.option("inferSchema", "true") 
scala> .load("data.csv") 
scala> df.show() 

<console>:35: error: value show is not a member of org.apache.spark.sql.DataFrameReader df.show() 

La dernière commande est censé afficher les premières lignes de la trame de données, mais je reçois le message d'erreur. Toute aide sera grandement appréciée.

Merci @

+0

Vous venez de copier/coller l'exemple de spark-csv est le shell sans essayer de comprendre comment cela fonctionne. – eliasah

Répondre

4

On dirait des fonctions que vous n'êtes pas chaînés correctement et il est tentant de courir « show() » sur le val df, qui est une référence à la classe DataFrameReader. Si je lance ce qui suit, je peux reproduire votre erreur:

val df = sqlContext.read 
df.show() 

Si vous restructurez le code, il travaillerait:

val df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").option("inferSchema", "true").load("data.csv") 
df.show() 
+0

Merci! J'ai essayé mais maintenant je reçois le message d'erreur: "java.lang.ClassNotFoundException: Impossible de trouver la source de données: com.databricks.spark.csv" – user2145299

+1

Si vous essayez ceci localement, vous devrez ajouter le pot de SparkCSV à votre chemin de classe. Vous pouvez suivre les instructions ici pour démarrer le shell et tirer les pots dans votre environnement: https://github.com/databricks/spark-csv $ SPARK_HOME/bin/shell-spark --packages com.databricks: spark-csv_2 .10: 1.4.0 – MrChristine

+0

Merci à tous! Cela fonctionne maintenant, l'image créée a une première rangée supplémentaire (C0, C1, C2, ...) comme en-tête de colonne! Les en-têtes de colonne réels sont considérés comme la première ligne des données. Comment puis-je réparer ça? – user2145299

0

en Java d'abord ajouter la dépendance dans le fichier pom.xml et exécuter suivant code pour lire le fichier csv.

<dependency> 
      <groupId>com.databricks</groupId> 
      <artifactId>spark-csv_2.10</artifactId> 
      <version>1.4.0</version> 
     </dependency> 

Dataset<Row> df = sparkSession.read().format("com.databricks.spark.csv").option`enter code here`("header", true).option("inferSchema", true).load("hdfs://localhost:9000/usr/local/hadoop_data/loan_100.csv"); 
0

Utilisez les commandes suivantes à la place:

val sqlContext = new SQLContext(sc); 

Il devrait résoudre votre problème.