Re: Scala Table API with Java POJO

Posted by Dong-iL, Kim on
URL: http://deprecated-apache-flink-user-mailing-list-archive.369.s1.nabble.com/Scala-Table-API-with-Java-POJO-tp8219p8228.html

in org.apache.flink.api.table.plan.PlanTranslator.

val inputType = set.getType().asInstanceOf[CompositeType[A]]

if (!inputType.hasDeterministicFieldOrder && checkDeterministicFields) {
      throw new ExpressionException(s"You cannot rename fields upon Table creation: " +
        s"Field order of input type $inputType is not deterministic." )
    }

when A is a PojoType, hasDeterministicFieldOrder always returns false.

what shall I do using Pojo.
Thanks.

> On Aug 1, 2016, at 6:11 PM, Dong-iL, Kim <[hidden email]> wrote:
>
> I’ve tried like this, but not work.
>
> dataSet.as(‘id as ‘id, ‘amount as ‘amount)
>
> dataSet.as(‘id, ‘amount)
>
> dataSet.as(“id, amount”)
>
> thanks.
>
>> On Aug 1, 2016, at 6:03 PM, Timo Walther <[hidden email]> wrote:
>>
>> I think you need to use ".as()" instead of "toTable()" to supply the field order.
>>
>> Am 01/08/16 um 10:56 schrieb Dong-iL, Kim:
>>> Hi Timo.
>>> I’m using scala API.
>>> There is no error with java API.
>>> my code snippet is this.
>>>
>>> dataSet.toTable
>>>                .groupBy(“id")
>>>                .select(‘id, ‘amount.sum as ‘amount)
>>>                .where(‘amount > 0)
>>>                .toDataSet[TestPojo]
>>>                .print()
>>>
>>> Thanks.
>>>
>>>> On Aug 1, 2016, at 5:50 PM, Timo Walther <[hidden email]> wrote:
>>>>
>>>> Hi Kim,
>>>>
>>>> as the exception says: POJOs have no deterministic field order. You have to specify the order during the DataSet to Table conversion:
>>>>
>>>> Table table = tableEnv.fromDataSet(pojoDataSet, "pojoField as a, pojoField2 as b");
>>>>
>>>> I hope that helps. Otherwise it would help if you could supply a code snippet of your program.
>>>>
>>>> Timo
>>>>
>>>> Am 01/08/16 um 10:19 schrieb Dong-iL, Kim:
>>>>> my flink ver is 1.0.3.
>>>>> thanks.
>>>>>
>>>>>> On Aug 1, 2016, at 5:18 PM, Dong-iL, Kim <[hidden email]> wrote:
>>>>>>
>>>>>> I’ve create a program using table API and get an exception like this.
>>>>>> org.apache.flink.api.table.ExpressionException: You cannot rename fields upon Table creation: Field order of input type PojoType<….> is not deterministic.
>>>>>> There is an error not in java program, but in scala program.
>>>>>> how can I use java POJO with scala Table API.
>>>>>>
>>>>
>>>> --
>>>> Freundliche Grüße / Kind Regards
>>>>
>>>> Timo Walther
>>>>
>>>> Follow me: @twalthr
>>>> https://www.linkedin.com/in/twalthr
>>>>
>>
>>
>> --
>> Freundliche Grüße / Kind Regards
>>
>> Timo Walther
>>
>> Follow me: @twalthr
>> https://www.linkedin.com/in/twalthr
>>
>