স্পার্ক - CSF ফাইলটি ডেটাফ্রেম হিসাবে লোড করবেন?


141

আমি স্পার্কে একটি সিএসভি পড়তে এবং এটিকে ডেটাফ্রেমে রূপান্তর করতে এবং এটি দিয়ে এইচডিএফএসে সঞ্চয় করতে চাই df.registerTempTable("table_name")

আমি চেষ্টা করেছি:

scala> val df = sqlContext.load("hdfs:///csv/file/dir/file.csv")

আমি যে ত্রুটি পেয়েছি:

java.lang.RuntimeException: hdfs:///csv/file/dir/file.csv is not a Parquet file. expected magic number at tail [80, 65, 82, 49] but found [49, 59, 54, 10]
    at parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:418)
    at org.apache.spark.sql.parquet.ParquetRelation2$MetadataCache$$anonfun$refresh$6.apply(newParquet.scala:277)
    at org.apache.spark.sql.parquet.ParquetRelation2$MetadataCache$$anonfun$refresh$6.apply(newParquet.scala:276)
    at scala.collection.parallel.mutable.ParArray$Map.leaf(ParArray.scala:658)
    at scala.collection.parallel.Task$$anonfun$tryLeaf$1.apply$mcV$sp(Tasks.scala:54)
    at scala.collection.parallel.Task$$anonfun$tryLeaf$1.apply(Tasks.scala:53)
    at scala.collection.parallel.Task$$anonfun$tryLeaf$1.apply(Tasks.scala:53)
    at scala.collection.parallel.Task$class.tryLeaf(Tasks.scala:56)
    at scala.collection.parallel.mutable.ParArray$Map.tryLeaf(ParArray.scala:650)
    at scala.collection.parallel.AdaptiveWorkStealingTasks$WrappedTask$class.compute(Tasks.scala:165)
    at scala.collection.parallel.AdaptiveWorkStealingForkJoinTasks$WrappedTask.compute(Tasks.scala:514)
    at scala.concurrent.forkjoin.RecursiveAction.exec(RecursiveAction.java:160)
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

অ্যাপাচি স্পার্কে ডেটাফ্রেম হিসাবে সিএসভি ফাইল লোড করার জন্য সঠিক আদেশটি কী?


উত্তর:


179

স্পার্ক-সিএসভি মূল স্পার্ক কার্যকারিতার অংশ এবং আলাদা লাইব্রেরির প্রয়োজন হয় না। সুতরাং আপনি যেমন উদাহরণস্বরূপ করতে পারে

df = spark.read.format("csv").option("header", "true").load("csvfile.csv")

স্কেলে, (এটি কোনও বিন্যাসে ডিলিমিটার উল্লেখ "," সিএসভির জন্য, tsv এর জন্য "\ t" ইত্যাদির জন্য কাজ করে)

val df = sqlContext.read.format("com.databricks.spark.csv") .option("delimiter", ",") .load("csvfile.csv")


163

সিএসভি পার্স করুন এবং স্পার্ক 2.x এর সাথে ডেটা ফ্রেম / ডেটাসেট হিসাবে লোড করুন

প্রথমে SparkSessionঅবজেক্টটি ডিফল্ট হিসাবে সূচনা করুন এটি শেলগুলিতে পাওয়া যাবেspark

val spark = org.apache.spark.sql.SparkSession.builder
        .master("local") # Change it as per your cluster
        .appName("Spark CSV Reader")
        .getOrCreate;

সিএসভি লোড করতে নিম্নলিখিত যে কোনও একটি উপায় ব্যবহার করুন DataFrame/DataSet

1. এটি একটি প্রোগ্রাম্যাটিক উপায়ে করুন

 val df = spark.read
         .format("csv")
         .option("header", "true") //first line in file has headers
         .option("mode", "DROPMALFORMED")
         .load("hdfs:///csv/file/dir/file.csv")

আপডেট: লিঙ্কটি ভবিষ্যতে ভাঙার ক্ষেত্রে এখান থেকে সমস্ত বিকল্প যুক্ত করা হচ্ছে

  • পথ : ফাইলগুলির অবস্থান। স্পার্কের মতোই স্ট্যান্ডার্ড হ্যাডোপ গ্লোব্বিং এক্সপ্রেশন গ্রহণ করতে পারে।
  • শিরোনাম : সত্য হিসাবে সেট করা হলে ফাইলগুলির প্রথম লাইনটি কলামগুলির নামকরণে ব্যবহৃত হবে এবং ডেটাতে অন্তর্ভুক্ত হবে না। সমস্ত ধরণের স্ট্রিং ধরে নেওয়া হবে। ডিফল্ট মান মিথ্যা।
  • ডিলিমিটার : ডিফল্ট কলামগুলি ব্যবহার করে সীমাবদ্ধ হয় তবে ডিলিমিটার যে কোনও অক্ষরে সেট করা যায়
  • উদ্ধৃতি : ডিফল্টরূপে উদ্ধৃতি চরিত্রটি ", তবে যে কোনও অক্ষরে সেট করা যেতে পারে es
  • এস্কেপ : ডিফল্টরূপে, পালানোর চরিত্রটি তবে কোনও অক্ষরে সেট করা যায়। পালানো উদ্ধৃতি অক্ষর উপেক্ষা করা হয়
  • পার্সারলিব : ডিফল্টরূপে এটি " কমন্স " যা CSV পার্সিংয়ের জন্য সেই লাইব্রেরিটি ব্যবহার করতে " ইউনিভোকিটি " তে সেট করা যেতে পারে ।
  • মোড : পার্সিং মোড নির্ধারণ করে। ডিফল্টরূপে এটি পারমিজিভ। সম্ভাব্য মানগুলি হ'ল:
    • পার্মিজিভ : সমস্ত লাইনকে বিশ্লেষণের চেষ্টা করে: টোকেন অনুপস্থিত জন্য নালগুলি inোকানো হয় এবং অতিরিক্ত টোকেন উপেক্ষা করা হয়।
    • DROPMALFORMED : ড্রপ রেখাগুলি যার প্রত্যাশার চেয়ে কম বা বেশি টোকেন রয়েছে বা টোকেন যা স্কিমার সাথে মেলে না
    • ব্যর্থতা : যদি কোনও ত্রুটিযুক্ত লাইন চরসেটের মুখোমুখি হয় তবে রানটাইম এক্সেকসেপশন সহ অবসান : 'ইউটিএফ -8' এ ডিফল্ট থাকলেও অন্য বৈধ অক্ষরক্ষেত্রের নামগুলিতে সেট করা যেতে পারে
  • inferSchema : স্বয়ংক্রিয়ভাবে কলামের প্রকারগুলি অনুমান করে । এটিতে ডেটা দিয়ে একটি অতিরিক্ত পাসের প্রয়োজন এবং এটি ডিফল্ট মন্তব্যে মিথ্যা: এই চরিত্রটি দিয়ে শুরু করে লাইনগুলি এড়িয়ে যান। ডিফল্ট হ'ল "#"। এটিকে বাতিল করে সেট করে মন্তব্যগুলি অক্ষম করুন।
  • নালভ্যালু : একটি স্ট্রিং নির্দিষ্ট করে যা নাল মানকে নির্দেশ করে, এই স্ট্রিংয়ের সাথে মেলে যে কোনও ক্ষেত্র ডেটাফ্রেমে নাল হিসাবে সেট করা হবে
  • dateFormat : নির্দিষ্ট করে একটি স্ট্রিং, যাতে যখন তারিখ বা টাইমস্ট্যাম্প পড়া ব্যবহার করতে তারিখ বিন্যাস নির্দেশ করে। কাস্টম তারিখের ফর্ম্যাটগুলি java.text.SimpleDate Format এ ফর্ম্যাটগুলি অনুসরণ করে। এটি ডেটটাইপ এবং টাইমস্ট্যাম্পটাইপ উভয়ের ক্ষেত্রে প্রযোজ্য। ডিফল্টরূপে, এটি নাল যার অর্থ java.sql.Timestamp.valueOf () এবং java.sql.Date.valueOf () দ্বারা সময় এবং তারিখ পার্স করার চেষ্টা করা।

২. আপনি এই এসকিউএল উপায়েও করতে পারেন

 val df = spark.sql("SELECT * FROM csv.`hdfs:///csv/file/dir/file.csv`")

নির্ভরতা :

 "org.apache.spark" % "spark-core_2.11" % 2.0.0,
 "org.apache.spark" % "spark-sql_2.11" % 2.0.0,

স্পার্ক সংস্করণ <2.0

val df = sqlContext.read
    .format("com.databricks.spark.csv")
    .option("header", "true") 
    .option("mode", "DROPMALFORMED")
    .load("csv/file/path"); 

নির্ভরতা:

"org.apache.spark" % "spark-sql_2.10" % 1.6.0,
"com.databricks" % "spark-csv_2.10" % 1.6.0,
"com.univocity" % "univocity-parsers" % LATEST,

এই অধিবেশন কি মধুচক্রের প্রয়োজন? আমি এইচআইভি ত্রুটি পাচ্ছি।
পুনেতে

2
দরকার নেই. শুধু spark-core_2.11এবং spark-sql_2.11এর 2.0.1সংস্করণ জরিমানা। সম্ভব হলে ত্রুটি বার্তা যুক্ত করুন।
mrsrinivas

1
আমরা কি পাইপ সীমিত ফাইলকে ডেটাফ্রেমে রূপান্তর করতে পারি?
ওমকার

3
@ ওমকারপট্টগুন্টা: হ্যাঁ, অবশ্যই! এর মতো কিছু চেষ্টা করে দেখুন spark.read.format("csv").option("delimiter ", "|") ...
mrsrinivas

1
এর জন্য অন্য বিকল্পটি programmatic wayহ'ল .format("csv")অফটি ছেড়ে .load(...দিয়ে প্রতিস্থাপন করা .csv(...optionযেমন দ্বারা ফিরে পদ্ধতি DataFrameReader বর্গ জন্যে readপদ্ধতি, যেখানে loadএবং csvপদ্ধতিগুলির উপর একটি dataframe আসতে তাই অপশন পর তাদের বলা হয় উপর বাঁধা থাকতে পারে না। এই উত্তরটি চমত্কার পুঙ্খানুপুঙ্খ কিন্তু যাতে লোকেরা সব অন্যান্য যে CSV উপলব্ধ অপশন দেখতে পারে আপনি ডকুমেন্টেশন সংযুক্ত থাকবে spark.apache.org/docs/latest/api/scala/... *): org.apache.spark.sql.DataFrame
দাভোস

17

এটি যার হ্যাডোপ ২. 2. এবং স্পার্ক 1.6 এবং "ডেটাব্রিক্স" প্যাকেজ ছাড়াই।

import org.apache.spark.sql.types.{StructType,StructField,StringType,IntegerType};
import org.apache.spark.sql.Row;

val csv = sc.textFile("/path/to/file.csv")
val rows = csv.map(line => line.split(",").map(_.trim))
val header = rows.first
val data = rows.filter(_(0) != header(0))
val rdd = data.map(row => Row(row(0),row(1).toInt))

val schema = new StructType()
    .add(StructField("id", StringType, true))
    .add(StructField("val", IntegerType, true))

val df = sqlContext.createDataFrame(rdd, schema)

12

স্পার্ক ২.০ সহ, আপনি কীভাবে সিএসভি পড়তে পারেন তা নিম্নলিখিত is

val conf = new SparkConf().setMaster("local[2]").setAppName("my app")
val sc = new SparkContext(conf)
val sparkSession = SparkSession.builder
  .config(conf = conf)
  .appName("spark session example")
  .getOrCreate()

val path = "/Users/xxx/Downloads/usermsg.csv"
val base_df = sparkSession.read.option("header","true").
  csv(path)

5
তার মাঝে একটি পার্থক্য আছে কি spark.read.csv(path)এবং spark.read.format("csv").load(path)?
এরিক

8

জাভা 1.8 এ এই কোড স্নিপেট সিএসভি ফাইলগুলি পড়তে পুরোপুরি কাজ করছে working

POM.xml

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql_2.10 -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.10</artifactId>
    <version>2.0.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.scala-lang/scala-library -->
<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.11.8</version>
</dependency>
<dependency>
    <groupId>com.databricks</groupId>
    <artifactId>spark-csv_2.10</artifactId>
    <version>1.4.0</version>
</dependency>

জাভা

SparkConf conf = new SparkConf().setAppName("JavaWordCount").setMaster("local");
// create Spark Context
SparkContext context = new SparkContext(conf);
// create spark Session
SparkSession sparkSession = new SparkSession(context);

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

        //("hdfs://localhost:9000/usr/local/hadoop_data/loan_100.csv");
System.out.println("========== Print Schema ============");
df.printSchema();
System.out.println("========== Print Data ==============");
df.show();
System.out.println("========== Print title ==============");
df.select("title").show();

যদিও এটি কারও কাজে লাগতে পারে। প্রশ্নটির একটি স্কেলা ট্যাগ রয়েছে।
ওয়ানক্রিস্টের

5

একটি সিএসভি ফাইল বিশ্লেষণ করার জন্য অনেক চ্যালেঞ্জ রয়েছে, ফাইলের আকার বড় হলে এটি যুক্ত হতে থাকে, যদি কলামের মানগুলিতে অ-ইংলিশ / এস্কেপ / বিভাজক / অন্যান্য অক্ষর থাকে, যা পার্সিং ত্রুটির কারণ হতে পারে।

যাদুটি তখন ব্যবহৃত বিকল্পগুলির মধ্যে রয়েছে। যেগুলি আমার পক্ষে কাজ করেছে এবং আশা করা উচিত তাদের বেশিরভাগ প্রান্তের বিষয়গুলি কভার করা উচিত নীচের কোডে:

### Create a Spark Session
spark = SparkSession.builder.master("local").appName("Classify Urls").getOrCreate()

### Note the options that are used. You may have to tweak these in case of error
html_df = spark.read.csv(html_csv_file_path, 
                         header=True, 
                         multiLine=True, 
                         ignoreLeadingWhiteSpace=True, 
                         ignoreTrailingWhiteSpace=True, 
                         encoding="UTF-8",
                         sep=',',
                         quote='"', 
                         escape='"',
                         maxColumns=2,
                         inferSchema=True)

আশা করি এইটি কাজ করবে. আরও রেফারেন্সের জন্য: পিএএসপার্ক 2 ব্যবহার করে এইচটিএমএল সোর্স কোড থাকা সিএসভি পড়ুন

দ্রষ্টব্য: উপরের কোডটি স্পার্ক 2 এপিআইয়ের, যেখানে সিএসভি ফাইল রিডিং এপিআই স্পার্ক ইনস্টলযোগ্য এর বিল্ট-ইন প্যাকেজগুলির সাথে বান্ডেলযুক্ত।

দ্রষ্টব্য: পাইস্পার্ক স্পার্কের জন্য পাইথন র‍্যাপার এবং স্কালা / জাভার মতো একই এপিআই ভাগ করে।


থানকিউ এতটুকু, আপনি আমার জীবন বাঁচালেন: ডি
খুবাইবা রাজা

4

পেনি এর স্পার্ক 2 উদাহরণটি স্পার্ক 2 এ করার উপায়। আরও একটি কৌতুক আছে:, ডাটা একটি প্রাথমিক স্ক্যান করছেন বিকল্পটি সেটিংয়ের দ্বারা দ্বারা তৈরি যে হেডার আছে inferSchemaকরতেtrue

এখানে, ধরেই নেওয়া, এটি যে sparkআপনি একটি স্পার্ক সেশন সেটআপ করেছেন তা হ'ল সমস্ত ল্যান্ডস্যাট চিত্রের সিএসভি সূচক ফাইলটিতে লোড করার অপারেশন যা এস 3-তে হোস্ট আশ্চর্য করে।

  /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You under the Apache License, Version 2.0
   * (the "License"); you may not use this file except in compliance with
   * the License.  You may obtain a copy of the License at
   *
   *    http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */

val csvdata = spark.read.options(Map(
    "header" -> "true",
    "ignoreLeadingWhiteSpace" -> "true",
    "ignoreTrailingWhiteSpace" -> "true",
    "timestampFormat" -> "yyyy-MM-dd HH:mm:ss.SSSZZZ",
    "inferSchema" -> "true",
    "mode" -> "FAILFAST"))
  .csv("s3a://landsat-pds/scene_list.gz")

খারাপ খবরটি হ'ল: এটি ফাইলের মাধ্যমে একটি স্ক্যান ট্রিগার করে; এই 20 + এমবি জিপযুক্ত সিএসভি ফাইলের মতো বৃহত্তর কোনও কিছুর জন্য, এটি দীর্ঘ সময় ধরে সংযোগ নিতে 30s সময় নিতে পারে। এটি মনে রাখবেন: একবার স্কিমাটি একবার আসার পরে আপনি নিজে হাতে কোড করা ভাল।

(কোড স্নিপেট অ্যাপাচি সফ্টওয়্যার লাইসেন্স 2.0 সমস্ত অস্পষ্টতা এড়াতে লাইসেন্সযুক্ত; এস 3 ইন্টিগ্রেশনের ডেমো / ইন্টিগ্রেশন পরীক্ষা হিসাবে আমি কিছু করেছি)


আমি এই সিএসভি পদ্ধতিটি বা বিকল্পগুলিতে কোনও মানচিত্র পাস করে দেখিনি। সুস্পষ্ট স্কিমা সরবরাহ করা সর্বদা ভাল বলে স্বীকার করেছেন, ইনফারস্কেমা দ্রুত এন নোংরা (ওরফে ডেটা সায়েন্স) এর জন্য ভাল তবে ইটিএল এর জন্য ভয়ানক।
দাভোস

2

আপনি যদি স্কাল 2.11 এবং অ্যাপাচি 2.0 বা ততোধিকের সাথে একটি জার তৈরি করছেন।

একটি sqlContextবা sparkContextঅবজেক্ট তৈরি করার দরকার নেই । শুধু একটি SparkSessionবস্তু সমস্ত প্রয়োজনের জন্য প্রয়োজনীয়তা পূরণ করে।

নিম্নলিখিতটি মাইকোড যা সূক্ষ্মভাবে কাজ করে:

import org.apache.spark.sql.{DataFrame, Row, SQLContext, SparkSession}
import org.apache.log4j.{Level, LogManager, Logger}

object driver {

  def main(args: Array[String]) {

    val log = LogManager.getRootLogger

    log.info("**********JAR EXECUTION STARTED**********")

    val spark = SparkSession.builder().master("local").appName("ValidationFrameWork").getOrCreate()
    val df = spark.read.format("csv")
      .option("header", "true")
      .option("delimiter","|")
      .option("inferSchema","true")
      .load("d:/small_projects/spark/test.pos")
    df.show()
  }
}

আপনি যদি ক্লাস্টারে চলছে তবে অবজেক্টটি সংজ্ঞায়িত .master("local")করার .master("yarn")সময় পরিবর্তন করতে হবেsparkBuilder

স্পার্ক ডকটি এটিকে অন্তর্ভুক্ত করে: https://spark.apache.org/docs/2.2.0/sql-programming-guide.html


এটি বিদ্যমান উত্তরের
মতোই

0

POM ফাইলে নিম্নলিখিত স্পার্ক নির্ভরতা যুক্ত করুন:

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.2.0</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>2.2.0</version>
</dependency>

// স্পার্ক কনফিগারেশন:

ভাল স্পার্ক = স্পার্কসেশন.বিল্ডার ()। মাস্টার ("স্থানীয়")। অ্যাপনাম ("নমুনা অ্যাপ্লিকেশন")। getOrCreate ()

// সিএসভি ফাইল পড়ুন:

ভাল ডিএফ = স্পার্ক.ড্রেড.অপশন ("শিরোনাম", "সত্য") c সিএসভি ("FILE_PATH")

// প্রদর্শন আউটপুট

df.show ()


0

সিস্টেমে আপেক্ষিক পাথ থেকে পড়তে বর্তমান ডিরেক্টরি পেতে System.getProperty পদ্ধতি ব্যবহার করুন এবং আপেক্ষিক পথ ব্যবহার করে ফাইলটি লোড করতে আরও ব্যবহার করুন।

scala> val path = System.getProperty("user.dir").concat("/../2015-summary.csv")
scala> val csvDf = spark.read.option("inferSchema","true").option("header", "true").csv(path)
scala> csvDf.take(3)

স্পার্ক: 2.4.4 স্কেল: 2.11.12


0

স্পার্ক ২.৪+ এর সাহায্যে, আপনি যদি কোনও স্থানীয় ডিরেক্টরি থেকে কোনও সিএসভি লোড করতে চান, তবে আপনি ২ টি সেশন ব্যবহার করতে পারেন এবং সেটি হাইভের মধ্যে লোড করতে পারেন। প্রথম সেশনটি "স্থানীয় [*]" হিসাবে মাস্টার () কনফিগারেশন এবং দ্বিতীয় অধিবেশন "সুতা" এবং মৌচিক সক্ষম দ্বারা তৈরি করা উচিত।

নীচে আমার জন্য কাজ করেছে।

import org.apache.log4j.{Level, Logger}
import org.apache.spark._
import org.apache.spark.rdd._
import org.apache.spark.sql._

object testCSV { 

  def main(args: Array[String]) {
    Logger.getLogger("org").setLevel(Level.ERROR)
    val spark_local = SparkSession.builder().appName("CSV local files reader").master("local[*]").getOrCreate()

    import spark_local.implicits._
    spark_local.sql("SET").show(100,false)
    val local_path="/tmp/data/spend_diversity.csv"  // Local file
    val df_local = spark_local.read.format("csv").option("inferSchema","true").load("file://"+local_path) // "file://" is mandatory
    df_local.show(false)

    val spark = SparkSession.builder().appName("CSV HDFS").config("spark.sql.warehouse.dir", "/apps/hive/warehouse").enableHiveSupport().getOrCreate()

    import spark.implicits._
    spark.sql("SET").show(100,false)
    val df = df_local
    df.createOrReplaceTempView("lcsv")
    spark.sql(" drop table if exists work.local_csv ")
    spark.sql(" create table work.local_csv as select * from lcsv ")

   }

spark2-submit --master "yarn" --conf spark.ui.enabled=false testCSV.jarএটি দিয়ে দৌড়াতে গেলে ঠিকঠাক হয়ে যায় এবং মধুতে টেবিলটি তৈরি করে।


-1

ডিফল্ট ফাইল ফর্ম্যাট হ'ল স্পার্ক.ড্রেড সহ পারকুইট .. এবং ফাইল রিডিং সিএসভি যে কেন আপনি ব্যতিক্রম পাচ্ছেন। আপনি যে এপিআই ব্যবহার করার চেষ্টা করছেন তার সাথে সিএসভি ফর্ম্যাট উল্লেখ করুন


-1

স্পার্ক ২.০+ ব্যবহার করে এটি ব্যবহার করে দেখুন

For non-hdfs file:
df = spark.read.csv("file:///csvfile.csv")


For hdfs file:
df = spark.read.csv("hdfs:///csvfile.csv")

For hdfs file (with different delimiter than comma:
df = spark.read.option("delimiter","|")csv("hdfs:///csvfile.csv")

দ্রষ্টব্য: - যে কোনও সীমিত ফাইলের জন্য এই কাজ। মান পরিবর্তন করতে কেবল বিকল্প ("ডিলিমিটার") ব্যবহার করুন।

আশা করি এটি সহায়ক।


এটি বিদ্যমান উত্তরের
মতোই

-1

অন্তর্নির্মিত স্পার্ক সিএসভি দিয়ে, আপনি স্পার্ক> ২.০ এর জন্য নতুন স্পার্কসেশন বস্তু দিয়ে এটি সহজেই সম্পন্ন করতে পারবেন।

val df = spark.
        read.
        option("inferSchema", "false").
        option("header","true").
        option("mode","DROPMALFORMED").
        option("delimiter", ";").
        schema(dataSchema).
        csv("/csv/file/dir/file.csv")
df.show()
df.printSchema()

আপনি সেট করতে পারেন বিভিন্ন বিকল্প আছে।

  • header: আপনার ফাইলের শীর্ষে শিরোনাম লাইন অন্তর্ভুক্ত কিনা
  • inferSchema: আপনি স্বয়ংক্রিয়ভাবে স্কিমা অনুমান করতে চান কিনা। ডিফল্ট হয় true। আমি যথাযথ ডেটাটাইপগুলি নিশ্চিত করতে সর্বদা স্কিমা সরবরাহ করতে পছন্দ করি।
  • mode: পার্সিং মোড, পার্মিজিভ, ড্রপমালফর্মড বা ব্যর্থ
  • delimiter: ডিলিমিটার নির্দিষ্ট করতে, ডিফল্ট হ'ল কমা (',')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.