J'ai essayé de faire fonctionner la bibliothèque de databricks pour lire les CSV. J'essaie de lire un TSV créé par Hive dans une trame de données spark en utilisant l'api scala).
Voici un exemple que vous pouvez exécuter dans le shell spark (j'ai rendu les exemples de données publics pour que cela fonctionne pour vous))
import org.Apache.spark.sql.SQLContext
import org.Apache.spark.sql.types.{StructType, StructField, StringType, IntegerType};
val sqlContext = new SQLContext(sc)
val segments = sqlContext.read.format("com.databricks.spark.csv").load("s3n://michaeldiscenza/data/test_segments")
Le documentation dit que vous pouvez spécifier le délimiteur mais je ne sais pas comment spécifier cette option.
Tous les paramètres d'option sont passés dans la fonction option()
comme ci-dessous:
val segments = sqlContext.read.format("com.databricks.spark.csv")
.option("delimiter", "\t")
.load("s3n://michaeldiscenza/data/test_segments")
Avec Spark 2.0 + utilisez le connecteur CSV intégré pour éviter la dépendance de tiers et de meilleures performances:
val spark = SparkSession.builder.getOrCreate()
val segments = spark.read.option("sep", "\t").csv("/path/to/file")