Thanks Kabeer. Will take a look and merge.

- Sudha

On Sun, Nov 24, 2019 at 1:11 PM Kabeer Ahmed <kab...@linuxmail.org> wrote:

> Dear Sudha,
>
> I have added a new question and answer in the comments section now (last
> one on the link: https://cwiki.apache.org/confluence/display/HUDI/FAQ
> <https://link.getmailspring.com/link/e720d4c1-8153-4631-aa01-05ef40af3...@getmailspring.com/0?redirect=https%3A%2F%2Fcwiki.apache.org%2Fconfluence%2Fdisplay%2FHUDI%2FFAQ&recipient=ZGV2QGh1ZGkuYXBhY2hlLm9yZw%3D%3D>).
> Kindly review and if there are any questions please let me know.
>
> Thanks
> Kabeer.
>
>
> On Nov 20 2019, at 10:58 pm, Bhavani Sudha <bhavanisud...@gmail.com>
> wrote:
>
> Thanks Kabeer. I think this would be a great faq question for new users.
>
> I think you should already be able to contribute to faqs like mentioned
> here - https://hudi.incubator.apache.org/community.html#accounts
> https://cwiki.apache.org/confluence/display/HUDI/FAQ#FAQ-ContributingtoFAQ
> . Please let me know if you see any troubles.
>
> Thanks,
> Sudha
>
> On Wed, Nov 20, 2019 at 9:20 AM Kabeer Ahmed <kab...@linuxmail.org> wrote:
>
> Sudha
>
> Do you think this is a good addition to FAQ? Since this might be a common
> question when a new user gets to see the hudi documentation. You could add
> it or I am happy to do it if you give me access. My apache jira id is:
> smdahmed.
> Thanks,
> Kabeer.
>
> On Nov 20 2019, at 7:23 am, Pratyaksh Sharma <pratyaks...@gmail.com>
> wrote:
>
> Thank you for the explanation Kabeer/Sudha.
>
> Let me go through the flow and revert back in case of any further
>
> queries.
>
> On Wed, Nov 20, 2019 at 6:21 AM Kabeer Ahmed <kab...@linuxmail.org>
>
> wrote:
>
> Pratyaksh,
> +1 to what Sudha has written. Lets zoom a bit closer.
> For hive, as you said, we explicitly set input format to
> HoodieParquetInputFormat.
> - HoodieParquetInputFormat extends MapredParquetInputFormat which is
> nothing but a input format for hive. Hive and Presto depend on this
>
> file to
>
> retrieve dataset from Hudi.
>
> For Spark, there is no such option to set this explicitly. Rather Spark
> starts reading the paths direct from the file system (HDFS or S3). From
> Spark the calls would be as below:
> - org.apache.spark.rdd.NewHadoopRDD.getPartitions
> - org.apache.parquet.hadoop.ParquetInputFormat.getSplits
> - org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits
>
> Now it is evident that we cant stick the HoodieParquetInputFormat.
>
> Rather
>
> we rely on the PathFilter class that allows us to filter out the paths
>
> (and
>
> files). So we explicitly set this in the Spark Hadoop Configuration
>
> (note
>
> that Spark uses Hadoop FS S3 implementation to read from S3).
>
> If you look into the file: HoodieROTablePathFilter, you will see that
> there is logic to ensure that folders (paths) or files for Hoodie
>
> related
>
> files always ensures that latest path/file is selected. Thus you do
>
> not see
>
> duplicate entries when you set. Without this, Spark is just plainly
>
> reading
>
> all the parquet files and displaying the data within them.
>
> It may take sometime from you to go through these paths and digest the
> flow. But should you still have any questions, please do not hesitate
>
> to
>
> revert back.
>
> Hope this helps
> Kabeer.
>
>
>
> Sent: Monday, November 18, 2019 at 7:47 PM
> From: "Bhavani Sudha" <bhavanisud...@gmail.com>
> To: dev@hudi.apache.org
> Subject: Re: Spark v2.3.2 : Duplicate entries found for each primary
>
> Key
>
> Hi Pratyaksh,
>
> Let me try to answer this. I believe spark does not natively invoke
> HoodieParquetInputFormat.getSplits() like Hive and Presto does. So when
> queried, spark just loads all the data files in that partition without
> applying Hoodie filtering logic. Thats why we need to instruct Spark to
> read in the appropriate format in one of the two ways suggested by
> Vinoth/Kabeer earlier.
>
> Thanks,
> Sudha
>
> On Mon, Nov 18, 2019 at 12:16 AM Pratyaksh Sharma <
>
> pratyaks...@gmail.com>
>
> wrote:
>
> Hi Vinoth/Kabeer,
> I have one small doubt regarding what you proposed to fix the issue.
>
> Why
>
> is
>
> HoodieParquetInputFormat class not able to handle deduplication of
>
>
> records
>
> in case of spark while it is able to do so in case of presto and
>
> hive?
>
>
> On Sun, Nov 17, 2019 at 4:08 AM Vinoth Chandar <vin...@apache.org>
>
> wrote:
>
>
> Sweet!
> On Sat, Nov 16, 2019 at 10:16 AM Purushotham Pushpavanthar <
> pushpavant...@gmail.com> wrote:
>
> Thanks Vinoth and Kabeer. It resolved my problem.
> Regards,
> Purushotham Pushpavanth
>
>
>
> On Fri, 15 Nov 2019 at 20:16, Kabeer Ahmed <kab...@linuxmail.org
>
>
> wrote:
>
>
> Adding to Vinoth's response, in spark-shell you just need to
>
> copy
>
> and
>
> paste the below line. Let us know if it still doesnt work.
>
>
>
>
>
>
>
> spark.sparkContext.hadoopConfiguration.setClass("mapreduce.input.pathFilter.class",
>
> classOf[org.apache.hudi.hadoop.HoodieROTablePathFilter],
> classOf[org.apache.hadoop.fs.PathFilter]);
> On Nov 15 2019, at 1:37 pm, Vinoth Chandar <vin...@apache.org>
>
>
>
>
> wrote:
>
> Hi,
>
> are you setting the path filters when you query the Hudi Hive
>
> table
>
> via
>
> Spark
> http://hudi.apache.org/querying_data.html#spark-ro-view (or
>
>
>
> http://hudi.apache.org/querying_data.html#spark-rt-view[http://hudi.apache.org/querying_data.html#spark-rt-view]
>
> alternatively)?
>
>
> - Vinoth
> On Fri, Nov 15, 2019 at 5:03 AM Purushotham Pushpavanthar <
> pushpavant...@gmail.com> wrote:
>
> Hi,
> Below is a create statement on my Hudi dataset.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *CREATE EXTERNAL TABLE
>
> `inventory`.`customer`(`_hoodie_commit_time`
>
> string,
>
> `_hoodie_commit_seqno` string, `_hoodie_record_key` string,
> `_hoodie_partition_path` string, `_hoodie_file_name`
>
> string,
>
>
>
>
>
>
>
> `id`
>
> bigint,
>
> `sales` bigint, `merchant` bigint, `item_status` bigint,
>
>
>
>
> `tem_shipment`
>
> bigint)PARTITIONED BY (`dt` string)ROW FORMAT SERDE
> 'org.apache.hadoop.hive.ql.io
>
>
>
>
>
>
> .parquet.serde.ParquetHiveSerDe'WITH
>
> SERDEPROPERTIES ( 'serialization.format' = '1')STORED AS
>
>
>
>
>
> INPUTFORMAT
>
> 'org.apache.hudi.hadoop.HoodieParquetInputFormat'
>
> OUTPUTFORMAT
>
> 'org.apache.hadoop.hive.ql.io
>
>
>
> .parquet.MapredParquetOutputFormat'LOCATION
>
>
> 's3://<warehouse-bucket>/<path>/inventory/customer'TBLPROPERTIES
>
> (
>
> 'bucketing_version' = '2', 'transient_lastDdlTime' =
>
>
>
>
>
>
> '1572952974',
>
> 'last_commit_time_sync' = '20191114192136')*
>
> I've taken care of adding
>
> *hudi-hive-bundle-0.5.1-SNAPSHOT.jar*
>
> in
>
> Hive,
>
> *hudi-presto-bundle-0.5.1-SNAPSHOT.jar* in Presto and
> *hudi-spark-bundle-0.5.1-SNAPSHOT.jar
> *in Spark (All three share common Metastore).
> We are running Hudi in COW mode and we noticed that there
>
> are
>
>
>
>
> multiple
>
> versions of the .parquet files
> written per partitions depending on number of updates
>
> coming to
>
>
>
>
>
> them
>
> over
>
> each batch execution. When queried from Hive and Presto
> for any Primary Key having multiple updates, it returns
>
> single
>
>
>
>
>
> record
>
> with
>
> latest state(I assume *HoodieParquetInputFormat* does the
>
> magic
>
>
>
>
>
>
> of
>
> taking
>
> care of duplicates). Whereas, when I tried to execute the
>
> same
>
>
>
>
>
> query
>
> in Spark SQL, I get duplicated records for any Primary Key
>
>
>
>
>
>
>
> having
>
> multiple
>
> updates.
>
> Can someone help me understand why Spark is not able to
>
> handle
>
> deduplication of records across multiple commits which
>
> Presto
>
>
>
>
>
>
>
> and
>
> Hive
>
> are
>
> able to do?
> I've taken care of providing
>
>
>
>
>
>
>
> hudi-spark-bundle-0.5.1-SNAPSHOT.jar
>
> while
>
> starting spark-shell. Is there something that I'm missing?
>
> Thanks in advance.
> Regards,
> Purushotham Pushpavanth
>
> [image: Sent from Mailspring]

Reply via email to