ok. I work for an org where such upgrades take a few months. Not an
immediate task.

Thanks,
Venkat
2016173438


On Fri, Mar 11, 2022 at 4:38 PM Mich Talebzadeh <mich.talebza...@gmail.com>
wrote:

> yes in spark 3.1.1. Best to upgrade it to spark 3+.
>
>
>
>    view my Linkedin profile
> <https://www.linkedin.com/in/mich-talebzadeh-ph-d-5205b2/>
>
>
>  https://en.everybodywiki.com/Mich_Talebzadeh
>
>
>
> *Disclaimer:* Use it at your own risk. Any and all responsibility for any
> loss, damage or destruction of data or any other property which may arise
> from relying on this email's technical content is explicitly disclaimed.
> The author will in no case be liable for any monetary damages arising from
> such loss, damage or destruction.
>
>
>
>
> On Fri, 11 Mar 2022 at 21:35, Venkatesan Muniappan <
> m.venkatbe...@gmail.com> wrote:
>
>> Thank you. I am trying to get the table definition for the existing
>> tables. BTW, the create and show command that you executed, was it on Spark
>> 3.x ? .
>>
>> Thanks,
>> Venkat
>> 2016173438
>>
>>
>> On Fri, Mar 11, 2022 at 4:28 PM Mich Talebzadeh <
>> mich.talebza...@gmail.com> wrote:
>>
>>> Well I do not know what has changed. However, this should not affect
>>> your work.
>>>
>>>
>>> Try to create table in Spark
>>>
>>>
>>> sqltext: String =
>>>
>>>   CREATE TABLE if not exists test.etcs(
>>>
>>>      ID INT
>>>
>>>    , CLUSTERED INT
>>>
>>>    , SCATTERED INT
>>>
>>>    , RANDOMISED INT
>>>
>>>    , RANDOM_STRING VARCHAR(50)
>>>
>>>    , SMALL_VC VARCHAR(10)
>>>
>>>    , PADDING  VARCHAR(4000)
>>>
>>>    , PADDING2 STRING
>>>
>>>   )
>>>
>>>   CLUSTERED BY (ID) INTO 256 BUCKETS
>>>
>>>   STORED AS PARQUET
>>>
>>>   TBLPROPERTIES (
>>>
>>>   "parquet.compress"="SNAPPY"
>>>
>>>  )
>>>
>>>
>>> scala> spark.sql (sqltext)
>>>
>>> scala> spark.sql("show create table test.etcs").show(false)
>>>
>>>
>>> +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
>>>
>>> |createtab_stmt
>>>
>>>
>>>
>>>                                             |
>>>
>>>
>>> +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
>>>
>>> |CREATE TABLE `test`.`etcs` (
>>>
>>>   `ID` INT,
>>>
>>>   `CLUSTERED` INT,
>>>
>>>   `SCATTERED` INT,
>>>
>>>   `RANDOMISED` INT,
>>>
>>>   `RANDOM_STRING` VARCHAR(50),
>>>
>>>   `SMALL_VC` VARCHAR(10),
>>>
>>>   `PADDING` VARCHAR(4000),
>>>
>>>   `PADDING2` STRING)
>>>
>>> USING parquet
>>>
>>> CLUSTERED BY (ID)
>>>
>>> INTO 256 BUCKETS
>>>
>>> TBLPROPERTIES (
>>>
>>>   'transient_lastDdlTime' = '1647033659',
>>>
>>>   'parquet.compress' = 'SNAPPY')
>>>
>>> |
>>>
>>>
>>> +------------------------------------------------------------------------------------------------------------------
>>>
>>>
>>> Note that columns are OK.
>>>
>>>
>>> Also check this link for the differences between CHAR, VARCHAR and
>>> STRING types in Hive
>>>
>>>
>>> https://cwiki.apache.org/confluence/display/hive/languagemanual+types
>>>
>>>
>>> HTH
>>>
>>>
>>>
>>>   view my Linkedin profile
>>> <https://www.linkedin.com/in/mich-talebzadeh-ph-d-5205b2/>
>>>
>>>
>>>  https://en.everybodywiki.com/Mich_Talebzadeh
>>>
>>>
>>>
>>> *Disclaimer:* Use it at your own risk. Any and all responsibility for
>>> any loss, damage or destruction of data or any other property which may
>>> arise from relying on this email's technical content is explicitly
>>> disclaimed. The author will in no case be liable for any monetary damages
>>> arising from such loss, damage or destruction.
>>>
>>>
>>>
>>>
>>> On Fri, 11 Mar 2022 at 20:55, Venkatesan Muniappan <
>>> m.venkatbe...@gmail.com> wrote:
>>>
>>>> Thank you Mich Talebzadeh for your answer. It's good to know that
>>>> VARCHAR and CHAR are properly showing in Spark 3. Do you know what changed
>>>> in Spark 3 that made this possible?. Or how can I achieve the same output
>>>> in Spark 2.4.1? If there are some conf options, that would be helpful.
>>>>
>>>> Thanks,
>>>> Venkat
>>>> 2016173438
>>>>
>>>>
>>>> On Fri, Mar 11, 2022 at 2:06 PM Mich Talebzadeh <
>>>> mich.talebza...@gmail.com> wrote:
>>>>
>>>>> Hive 3.1.1
>>>>> Spark 3.1.1
>>>>>
>>>>> Your stack overflow issue raised and I quote:
>>>>>
>>>>> "I have a need to generate DDL statements for Hive tables & views
>>>>> programmatically. I tried using Spark and Beeline for this task. Beeline
>>>>> takes around 5-10 seconds for each of the statements whereas Spark
>>>>> completes the same thing in a few milliseconds. I am planning to use Spark
>>>>> since it is faster compared to beeline. One downside of using spark for
>>>>> getting DDL statements from the hive is, it treats CHAR, VARCHAR 
>>>>> characters
>>>>> as String and it doesn't preserve the length information that goes with
>>>>> CHAR,VARCHAR data types. At the same time beeline preserves the data type
>>>>> and the length information for CHAR,VARCHAR data types. *I am using
>>>>> Spark 2.4.1 and Beeline 2.1.1.*
>>>>>
>>>>> Given below the sample create table command and its show create table
>>>>> output."
>>>>>
>>>>> Create a simple table in *Hive* in test database
>>>>>
>>>>> hive> *use test;*
>>>>> OK
>>>>> hive> *create table etc(ID BIGINT, col1 VARCHAR(30), col2 STRING);*
>>>>> OK
>>>>> hive> *desc formatted etc;*
>>>>> # col_name              data_type               comment
>>>>> *id                      bigint*
>>>>> *col1                    varchar(30)*
>>>>> *col2                    string*
>>>>>
>>>>> # Detailed Table Information
>>>>> Database:               test
>>>>> OwnerType:              USER
>>>>> Owner:                  hduser
>>>>> CreateTime:             Fri Mar 11 18:29:34 GMT 2022
>>>>> LastAccessTime:         UNKNOWN
>>>>> Retention:              0
>>>>> Location:
>>>>>  hdfs://rhes75:9000/user/hive/warehouse/test.db/etc
>>>>> Table Type:             MANAGED_TABLE
>>>>> Table Parameters:
>>>>>         COLUMN_STATS_ACCURATE
>>>>>  
>>>>> {\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"col1\":\"true\",\"col2\":\"true\",\"id\":\"true\"}}
>>>>>         bucketing_version       2
>>>>>         numFiles                0
>>>>>         numRows                 0
>>>>>         rawDataSize             0
>>>>>         totalSize               0
>>>>>         transient_lastDdlTime   1647023374
>>>>>
>>>>> # Storage Information
>>>>> SerDe Library:
>>>>> org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
>>>>> InputFormat:            org.apache.hadoop.mapred.TextInputFormat
>>>>> OutputFormat:
>>>>>  org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
>>>>> Compressed:             No
>>>>> Num Buckets:            -1
>>>>> Bucket Columns:         []
>>>>> Sort Columns:           []
>>>>> Storage Desc Params:
>>>>>         serialization.format    1
>>>>>
>>>>> Now let's go to spark-shell
>>>>>                                               ^
>>>>> scala> *spark.sql("show create table test.etc").show(false)*
>>>>>
>>>>> +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
>>>>> |createtab_stmt
>>>>>
>>>>>                                   |
>>>>>
>>>>> +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
>>>>> |CREATE TABLE `test`.`etc` (
>>>>> *  `id` BIGINT,*
>>>>> *  `col1` VARCHAR(30),*
>>>>> *  `col2` STRING)*
>>>>> USING text
>>>>> TBLPROPERTIES (
>>>>>   'bucketing_version' = '2',
>>>>>   'transient_lastDdlTime' = '1647023374')
>>>>> |
>>>>>
>>>>> +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
>>>>>
>>>>> You can see Spark shows columns correctly
>>>>>
>>>>> Now let us go and create the same table in hive through beeline
>>>>>
>>>>>
>>>>> 0: jdbc:hive2://rhes75:10099/default>* use test*
>>>>>
>>>>> No rows affected (0.019 seconds)
>>>>>
>>>>> 0: jdbc:hive2://rhes75:10099/default> *create table etc(ID BIGINT,
>>>>> col1 VARCHAR(30), col2 STRING)*
>>>>>
>>>>> . . . . . . . . . . . . . . . . . . > No rows affected (0.304 seconds)
>>>>>
>>>>> 0: jdbc:hive2://rhes75:10099/default> *desc formatted etc*
>>>>>
>>>>> . . . . . . . . . . . . . . . . . . >
>>>>> +-------------------------------+----------------------------------------------------+----------------------------------------------------+
>>>>>
>>>>> |           col_name            |                     data_type
>>>>>               |                      comment                       |
>>>>>
>>>>>
>>>>> +-------------------------------+----------------------------------------------------+----------------------------------------------------+
>>>>>
>>>>> | # col_name                    | data_type
>>>>>               | comment                                            |
>>>>>
>>>>> *| id                            | bigint
>>>>>                |                                                    |*
>>>>>
>>>>> *| col1                          | varchar(30)
>>>>>                 |                                                    |*
>>>>>
>>>>> *| col2                          | string
>>>>>                |                                                    |*
>>>>>
>>>>> |                               | NULL
>>>>>                | NULL                                               |
>>>>>
>>>>> | # Detailed Table Information  | NULL
>>>>>                | NULL                                               |
>>>>>
>>>>> | Database:                     | test
>>>>>                | NULL                                               |
>>>>>
>>>>> | OwnerType:                    | USER
>>>>>                | NULL                                               |
>>>>>
>>>>> | Owner:                        | hduser
>>>>>                | NULL                                               |
>>>>>
>>>>> | CreateTime:                   | Fri Mar 11 18:51:00 GMT 2022
>>>>>                | NULL                                               |
>>>>>
>>>>> | LastAccessTime:               | UNKNOWN
>>>>>               | NULL                                               |
>>>>>
>>>>> | Retention:                    | 0
>>>>>               | NULL                                               |
>>>>>
>>>>> | Location:                     |
>>>>> hdfs://rhes75:9000/user/hive/warehouse/test.db/etc | NULL
>>>>>                              |
>>>>>
>>>>> | Table Type:                   | MANAGED_TABLE
>>>>>               | NULL                                               |
>>>>>
>>>>> | Table Parameters:             | NULL
>>>>>                | NULL                                               |
>>>>>
>>>>> |                               | COLUMN_STATS_ACCURATE
>>>>>               |
>>>>> {\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"col1\":\"true\",\"col2\":\"true\",\"id\":\"true\"}}
>>>>> |
>>>>>
>>>>> |                               | bucketing_version
>>>>>               | 2                                                  |
>>>>>
>>>>> |                               | numFiles
>>>>>                | 0                                                  |
>>>>>
>>>>> |                               | numRows
>>>>>               | 0                                                  |
>>>>>
>>>>> |                               | rawDataSize
>>>>>               | 0                                                  |
>>>>>
>>>>> |                               | totalSize
>>>>>               | 0                                                  |
>>>>>
>>>>> |                               | transient_lastDdlTime
>>>>>               | 1647024660                                         |
>>>>>
>>>>> |                               | NULL
>>>>>                | NULL                                               |
>>>>>
>>>>> | # Storage Information         | NULL
>>>>>                | NULL                                               |
>>>>>
>>>>> | SerDe Library:                |
>>>>> org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe | NULL
>>>>>                              |
>>>>>
>>>>> | InputFormat:                  |
>>>>> org.apache.hadoop.mapred.TextInputFormat           | NULL
>>>>>                              |
>>>>>
>>>>> | OutputFormat:                 |
>>>>> org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat | NULL
>>>>>                                      |
>>>>>
>>>>> | Compressed:                   | No
>>>>>                | NULL                                               |
>>>>>
>>>>> | Num Buckets:                  | -1
>>>>>                | NULL                                               |
>>>>>
>>>>> | Bucket Columns:               | []
>>>>>                | NULL                                               |
>>>>>
>>>>> | Sort Columns:                 | []
>>>>>                | NULL                                               |
>>>>>
>>>>> | Storage Desc Params:          | NULL
>>>>>                | NULL                                               |
>>>>>
>>>>> |                               | serialization.format
>>>>>                | 1                                                  |
>>>>>
>>>>>
>>>>> +-------------------------------+----------------------------------------------------+----------------------------------------------------+
>>>>>
>>>>> 33 rows selected (0.159 seconds)
>>>>>
>>>>> Now check that in spark-shell again
>>>>>
>>>>>
>>>>> scala> spark.sql("show create table test.etc").show(false)
>>>>>
>>>>>
>>>>> +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
>>>>>
>>>>> |createtab_stmt
>>>>>
>>>>>                                   |
>>>>>
>>>>>
>>>>> +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
>>>>>
>>>>> |CREATE TABLE `test`.`etc` (
>>>>>
>>>>> *  `id` BIGINT,*
>>>>>
>>>>> *  `col1` VARCHAR(30),*
>>>>>
>>>>> *  `col2` STRING)*
>>>>>
>>>>> USING text
>>>>>
>>>>> TBLPROPERTIES (
>>>>>
>>>>>   'bucketing_version' = '2',
>>>>>
>>>>>   'transient_lastDdlTime' = '1647024660')
>>>>>
>>>>> |
>>>>>
>>>>>
>>>>> +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
>>>>>
>>>>>
>>>>> It shows OK.  Soo in summary you get column definitions in Spark as
>>>>> you have defined them in Hive
>>>>>
>>>>>
>>>>> In your statement above and I quote "I am using Spark 2.4.1 and
>>>>> Beeline 2.1.1", refers to older versions of Spark and hive which may
>>>>> have had such issues.
>>>>>
>>>>>
>>>>> HTH
>>>>>
>>>>>
>>>>>
>>>>>    view my Linkedin profile
>>>>> <https://www.linkedin.com/in/mich-talebzadeh-ph-d-5205b2/>
>>>>>
>>>>>
>>>>>  https://en.everybodywiki.com/Mich_Talebzadeh
>>>>>
>>>>>
>>>>>
>>>>> *Disclaimer:* Use it at your own risk. Any and all responsibility for
>>>>> any loss, damage or destruction of data or any other property which may
>>>>> arise from relying on this email's technical content is explicitly
>>>>> disclaimed. The author will in no case be liable for any monetary damages
>>>>> arising from such loss, damage or destruction.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Fri, 11 Mar 2022 at 18:19, Venkatesan Muniappan <
>>>>> m.venkatbe...@gmail.com> wrote:
>>>>>
>>>>>> hi Spark Team,
>>>>>>
>>>>>> I have raised a question on Spark through Stackoverflow. When you get
>>>>>> a chance, can you please take a look and help me ?.
>>>>>>
>>>>>> https://stackoverflow.com/q/71431757/5927843
>>>>>>
>>>>>> Thanks,
>>>>>> Venkat
>>>>>> 2016173438
>>>>>>
>>>>>

Reply via email to