Skip to main content

A simple package to let you Sqoop into HDFS/Hive/HBase with python

Project description

pysqoop

A python package that lets you sqoop into HDFS/Hive/HBase data from RDBMS using sqoop.

PyPI Python Tests MIT license

To install the package via pip, run

pip install pysqoop

You can then use the package using

from pysqoop.SqoopImport import Sqoop 
sqoop = Sqoop(help=True)
code = sqoop.perform_import()

This will print the output of the command

sqoop --help

to your stoud; e.g.

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/hdp/2.6.3.0-235/hadoop/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/hdp/2.6.3.0-235/accumulo/lib/slf4j-log4j12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
18/08/13 20:25:13 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6.2.6.3.0-235
usage: sqoop import [GENERIC-ARGS] [TOOL-ARGS]

Common arguments:
   --connect <jdbc-uri>                                       Specify JDBC
                                                              connect
                                                              string
   --connection-manager <class-name>                          Specify
                                                              connection
                                                              manager
                                                              class name
   ...

Useful Resources

A more concrete example

The following code

sqoop = Sqoop(fs='hdfs://remote-cluster:8020', hive_drop_import_delims=True, fields_terminated_by='\;',
enclosed_by='\'"\'', escaped_by='\\\\', null_string='\'\'', null_non_string='\'\'',
table='sample_table', target_dir='hdfs://remote-cluster/user/hive/warehouse/db/sample_table',
delete_target_dir=True, connect='jdbc:oracle:thin:@//your_ip:your_port/your_schema',
username='user', password='pwd', num_mappers=2,
bindir='/path/to/bindir/folder')

sqoop.perform_import()

will execute the following command

sqoop import -fs hdfs://remote-cluster:8020 --hive-drop-import-delims --fields-terminated-by \; --enclosed-by \'\"\' --escaped-by \\\\ --null-string \'\' --null-non-string \'\' --table sample_table --target-dir hdfs://remote-cluster/user/hive/warehouse/db/sample_table --delete-target-dir --connect jdbc:oracle:thin:@//your_ip:your_port/your_schema --username user --password pwd --num-mappers 2 --bindir /path/to/bindir/folder

Conditional Building

Use the set_param, unset_param function to build conditioned sqoop imports.

sqoop = Sqoop(table="MyTable")

sqoop.set_param(param="--connect", value="jdbc:a_valid_string")

if taget_is_hbase :
   added_table = sqoop.set_param(param="--hbase-table", value="MyTable")
   added_key = sqoop.set_param(param="--hbase-row-key", value="Id_MyTable")
   if added_table and added_key:
      print("all params added :D")

sqoop.perform_import()

Unit Testing

In order to run unit tests open the terminal and change the current directory to unittests folder.

Then, simply run python unintary_tests.py. Add your unit tests in this file

Doing

  • handle sqoop jobs

TODOs

  • add missing parameters
  • more tests coverage

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pysqoop-0.0.15.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pysqoop-0.0.15-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file pysqoop-0.0.15.tar.gz.

File metadata

  • Download URL: pysqoop-0.0.15.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.4.2 requests/2.23.0 setuptools/47.1.1.post20200604 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.10

File hashes

Hashes for pysqoop-0.0.15.tar.gz
Algorithm Hash digest
SHA256 f12d1c3496872490ee64a6db92abe50fafbaa3f0432e523bd35a666345cc65ab
MD5 94ddd940cad0f9318042756dec0c1bda
BLAKE2b-256 cbdf1a290bcb223c654f7380ecbfb481281adeafb50857e0278b135e9c533fa2

See more details on using hashes here.

File details

Details for the file pysqoop-0.0.15-py3-none-any.whl.

File metadata

  • Download URL: pysqoop-0.0.15-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.4.2 requests/2.23.0 setuptools/47.1.1.post20200604 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.10

File hashes

Hashes for pysqoop-0.0.15-py3-none-any.whl
Algorithm Hash digest
SHA256 a0bded6a478aa3525d47515f7bddf5903612895f525f2065d0f6443ac4e38140
MD5 2d45a64f776777af248f971c14f48516
BLAKE2b-256 1da6d062596e120e02dceb04d9104aa4ad1035359ce97ec6703cb6eea890a59a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page