Hi Grant

I really appreciate for your reply

Let me explain my case with Kudu and Spark.  We a using Kudu with Spark in 
production to aggregate current and historical records.
 
So i have 2 tables:

Table A - which have following partition  schema:
HASH (record_id) PARTITIONS N,
RANGE (meet_date) (
    PARTITION 2018-11-15T00:00:00.000000Z <= VALUES < 
2018-11-16T00:00:00.000000Z,
    PARTITION 2018-11-16T00:00:00.000000Z <= VALUES < 
2018-11-17T00:00:00.000000Z,
    PARTITION 2018-11-17T00:00:00.000000Z <= VALUES < 
2018-11-18T00:00:00.000000Z
) Table B 
HASH (record_id) PARTITIONS N,
RANGE (record_id) (
    PARTITION UNBOUNDED
) Table B contains historical information and Table contains current 
information flow splited by days. History table is big enough (~ 4 000 000 000 
records)  

So i expect that records with same record_id from Table A and Table B will be 
stored on same kudu nodes.  (May be this expectation is unreasonable) Please 
correct me if i'm wrong.

Next i try to do following

RDDA = kuduRDD(Table A)
RDDB = kuduRDD(Table B)

RDDA join RDDB by record_id 

And here i do not expect any shuffling but it does. Spark knows about partition 
locality (getPrefferedLocation returns correct list of kudu locations). 
but looks like it does not know about original Kudu partitioning. So i have to 
add rdd.partitionBy(new HashPartitioner(N)) before join operation
and it leads to shuffling  
Regards, Dmitry

>Среда, 14 ноября 2018, 18:58 +03:00 от Grant Henke <[email protected]>:
>
>Unfortunately, I am not sure of a simple way to provide the partitioner 
>information with the existing implementation. Currently the KuduRDD does not 
>override the  RDD partitioner , though it probably could as an improvement. 
>
>Would you like to file a Kudu jira to track the work? Would you be interested 
>in contributing the improvement? 
>
>I am curious to know, how are you planning to use the knowledge of the 
>original Kudu partitioning and how is it useful to your Spark workflow?
>
>Thanks,
>Grant
>
>
>
>On Wed, Nov 14, 2018 at 2:41 AM Dmitry Pavlov < [email protected] > wrote:
>>Hi guys
>>
>>I have a question about Kudu with Spark.
>>
>>For example there is a table in kudu with field record_id and following 
>>partitioning:
>>HASH (record_id) PARTITIONS N
>>
>>Is it possible to load records from such table in key value fashion with 
>>correct partitioner information in RDD? For example RDD[(record_id, row)]
>>Because when i try to use kuduRDD in spark the partitioner has None value so 
>>im losing information about original (kudu) partitioning.
>>
>>Thanks
>
>-- 
>Grant Henke 
>Software Engineer | Cloudera
>[email protected] |  twitter.com/gchenke |  linkedin.com/in/granthenke

-- 
Дмитрий Павлов

Reply via email to