Search This Blog

Friday, April 2, 2021

Great Expectations with Databricks - Data Quality Matters

Managing data quality, testing and profiling data with Databricks is something often asked for when dealing with Data Assets.  Testing code and applying code coverage metrics is common practice, how about coverage on data?

There are a few tools out there to manage testing, profiling, and managing quality of data pipelines.  In this post I'll talk about one Python tool, Great Expectations, and an awesome blog from a data scientist working with Spark and tools like Great Expectations.

Great Expectations

Great Expectations is a pipeline data quality and data profiling library and scaffolding tool.  

If you're comfortable working with Spark or Pandas dataframes, you would be comfortable working with this framework.  In my initial view, the set up isn't quite notebook-friendly with it's wizard-based prompts.  Best to try running locally first.  There is also a lot going on with this framework.  Take the time to dig into its features.

Once I got the framework installed, I was quickly able to setup both Spark and Pandas dataframe Expectations.  Expectations are assertions about your data, and can be packaged into Suites.  Great Expectations presents a lot of expectations for use in automated data testing and profiling.  Here's a list, the Glossary of Expectations.

Before you start writing code to validate some json in a column, check out expect_column_values_to_be_json_parseable or expect_column_values_to_match_json_schema.

Are you working on a machine learning project and need to verify some results statistically?  expect_column_stdev_to_be_between, expect_column_proportion_of_unique_values_to_be_between, use the at_least or at_most features, or perhaps something more?

Kullback-Leibeler divergence?
expect_column_kl_divergence_to_be_less_than

bootstrapped Kolmogorov-Smirnov test? expect_column_bootstrapped_ks_test_p_value_to_be_greater_than
expect_column_parameterized_distribution_ks_test_p_value_to_be_greater_than


Chi-squared test?
expect_column_chisquare_test_p_value_to_be_greater_than

Note that some of these expectations may have big data issues until they mature a bit more.
See https://github.com/great-expectations/great_expectations/issues/2277

Datasources can be used to interact with Batches of data, and apply Validators to evaluate Expectations or Expectation Suites.

Checkpoints are used to validate, test, and perform other actions.  Stores and the Data Context configuration provides locations to configuration, metrics, validation results, and documentation.

Great Expectations could also be considered the Sphinx docs tool for data.  It includes Site and Page builders, Renderers, and other tools to auto-generate documentation for data Batches.

A Profiler is available for scaffolding expectations and building collections of metrics.

Great Expectations is compatible with Databricks and Pyspark.  I was also able to get portions of the framework setup in Google Colaboratory, with Spark and Airflow(!), for experimentation.

https://docs.greatexpectations.io/en/latest/guides/how_to_guides/configuring_data_contexts/how_to_instantiate_a_data_context_on_a_databricks_spark_cluster.html

One addition to the framework is a Data Dictionary plugin.  If you're using comments or metadata in tables and columns, or would like to manage these separately for Data Assets, this could be one tool to look at.  Another would be services such as Azure Purview.

There's also a markdown renderer, so you can publish your data documentation to a code wiki or browse with tools like https://typora.io/.

Here's the latest documentation on Read the Docs.

Justin Matters

Justin Matters, a data scientist and developer from Edinburgh, UK, has some excellent articles on Databricks and Pyspark that may help with standardizing data pipelines, testing and data quality.  I highly recommend reading his blog posts.  Here's a few I've put in my sandbox for later testing.

Refactoring code with curried functions
https://justinmatters.co.uk/wp/building-a-custom-data-pipeline-using-curried-functions/


Spark gotchas and nullability


SQL to Pyspark Cheat Sheet

Are Dataframes Equal


Try These Out with Databricks

Databricks provides a community edition to get you started, spin up an instance in Azure, AWS, and GCP.  






Wednesday, January 31, 2018

Service Auto-Start for Ambari and HDP/HDF clusters

The first time you reboot a Hortonworks HDP/HDF cluster node, you will notice some services do not auto-start by default.  This may include Ambari Server and Agent, depending on how it was initially configured.

These can be managed in a few different ways.
https://community.hortonworks.com/content/supportkb/151076/how-to-enable-ambari-server-auto-start-on-rhelcent.html

Ambari UI makes it easy with the auto-start feature.

https://docs.hortonworks.com/HDPDocuments/Ambari-2.6.0.0/bk_ambari-operations/content/enable_service_auto_start.html

https://cwiki.apache.org/confluence/display/AMBARI/Recovery%3A+auto+start+components
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=41812517

There are some related JIRAs and documentation around this.
https://issues.apache.org/jira/browse/AMBARI-10029
https://community.hortonworks.com/questions/825/how-to-write-cluster-startup-shutdown-order-and-sc.html

Note that order of startup of services for larger clusters, and some delays starting services may cause issues with this feature.  I have seen situations where HDFS needs a little more time to successfully start before other services can properly register themselves.

Saturday, December 16, 2017

IBM and Hortonworks Consolidate Offerings at DataWorks Summit

At DataWorks Summit this year, a few announcements were made.  One in particular further consolidates the Hadoop distributions and makes Hortonworks Data Platform (HDP) an even more compelling offering.

https://hortonworks.com/press-releases/ibm-hortonworks-expand-partnership/

IBM and Hortonworks are both members of the ODPi, and now they are offering IBM Data Science Experience and IBM Big SQL as packaged offerings with HDP.

In addition, IBM is migrating BigInsights customers to HDP, consolidating IBM BigIntegrate, IBM BigQuality, and IBM Information Governance Catalog into Apache Atlas, and continuing to contribute to open source platforms including Apache Spark and SystemML.

IBM has at least 4 official Apache Spark committers with 2 official committers from Hortonworks.  When I looked at this list in April, 2014, neither company had committers.  The list of committers has almost doubled since then.  Mridul Muralidharam joined Hortonworks from Yahoo!, Nick Pentreath joined IBM from Mxit, Prashant Sharma joined IBM from Databricks.

IBM, Databricks, and Hortonworks are by far the top contributing companies to PySpark 2.0.  Two years ago IBM went all-in on Spark, calling it "Potentially the Most Significant Open Source Project of the Next Decade"

Another announcement was the inclusion of Hortonworks Registry for Kafka, Storm and NiFi.  Similar to https://github.com/confluentinc/schema-registry it distinguishes itself from the competition by providing pluggable storage of schemas in MySql or Postgres, a web-based UI, search capabilities.

The question that popped into my head right away is why didn't they just extend the Hive metastore to become the Schema Registry for all things streaming, and provide tumbling windows on Kafka and Storm from Hive?  This would have been an awesome addition to the Hive StorageHandlers.

There's always HiveKa if anyone wants to pick it up...

The latest HDF 3.0 was announced.  One component that brought some excitement was the generically-named Streaming Analytics Manager.  It's gui-based design is a bit similar to NiFi, with the addition of Dashboards, the aforementioned Schema Registry, and monitoring views.  This tool tries to democratize the creation and managment of streaming data sources.

Data in motion is the story of 2017 and beyond.


Spark Classes and Resources

There's a-lot of material available for Spark MLlib (RDD based API) - this API may be deprecated with next release i.e. 2.3 ....
https://cognitiveclass.ai/courses/spark-mllib/

Spark ML is Dataframes based API - there are less training resources than core Spark  - MOOCs on edx/datacamp/udemy

Spark ML training at Strata  (full videos are available on safaribooksonline.com) and few more on safari from various authors/publications.

Great resource for anything Spark
https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-mllib/spark-mllib-pipelines.html

https://mapr.com/training/certification/mcsd/opic-centric list of high-quality open datasets

https://github.com/caesar0301/awesome-public-datasets

Subscribe to Spark email list or review archives. 

http://apache-spark-user-list.1001560.n3.nabble.com/template/NamlServlet.jtp?macro=search_page&node=1&query=spark+ml&days=0&sort=date
https://spark.apache.org/community.html

Databricks is the founding organization of Spark and largest contributor.
https://databricks.com/training/courses/apache-spark-for-machine-learning-and-data-science

UC Berkeley, Hortonworks, IBM, and Cloudera are other top Spark committers. 

Berkeley has some courses, granddaddy of MLLib.
http://mlbase.org/

Hortonworks
https://hortonworks.com/apache/spark/

IBM
https://www.ibm.com/ca-en/marketplace/spark-as-a-service

Cloudera
https://university.cloudera.com/instructor-led-training/introduction-to-machine-learning-with-spark-ml-and-mllib (paid)

Deep Learning
https://github.com/databricks/spark-deep-learning

Databricks repos
https://github.com/databricks

Spark Roadmap
http://apache-spark-developers-list.1001551.n3.nabble.com/Spark-ml-roadmap-2-3-0-and-beyond-td22892.html#a22972


Certifications search on Github
https://github.com/search?l=Markdown&q=spark+ml+certification&type=Code&utf8=%E2%9C%93

Apache Spark Meetups
https://spark.apache.org/community.html

Friday, February 24, 2017

Azure Data Lake Analytics

Microsoft Azure Data Lake Analytics and Data Lake Store offerings provide an alternative and complimentary solution to Azure HDInsight & Hortonworks HDP.

 Azure Data Lake Analytics (ADLA) provides a U-SQL language (think Pig + SQL + C# + more) based on Microsoft's internal language Scope. Scope is used for tools like Bing Search. It has the same concepts as Hadoop - schema on read, custom reducers, extractors/SerDes, etc.  A component of ADLA is based on Microsoft internal job scheduler and compute engine, Cosmos. ADLA uses Apache YARN to schedule jobs and manage its in-memory components.

 Azure Data Lake Store (ADLS) is a blob storage layer for ADLA, which behaves more like HDFS and uses WebHDFS / Apache Hadoop behind the scenes. ADLA includes the concepts of Tables, Views, Stored Procedures, Table-Valued Functions, Partitions, and stores these types of objects in its internal metastore catalog, similar to Hive.

Currently ADLS supports TSV/CSV format, with extensions for JSON and the ability to write custom extractors against pretty much any format that you could read with .NET or the .Net SDK for Hadoop.

A USQL Script looks something like this:

DECLARE EXTERNAL @inputfile string = "myinputdir/myinputfile"

@indataset = EXTRACT 
col1 as string, 
col2 as int?
FROM @inputfile
USING Extractors.Tsv(skipFirstNRows:1, silent:false);

@outdataset = SELECT 
col1, 
(col2.Length == 0)? 0 : col2 AS isblankcol
FROM @indataset;

OUTPUT @outdataset TO @outputlocation
USING Outputters.Tsv(outputHeader : true, quoting: false);

One problem I have with USQL is the name.  Every search on Google comes back with "We searched for SQL. Did you mean USQL?"

USQL uses C# syntax and .Net data typing, and it includes code-behind and custom assemblies.
A USQL Script job can be submitted either locally for testing or to Azure Data Lake Analytics.  It is a batch process and there is limited interactive functionality.

For those familiar with using hdfs / hadoop commands, there is Python shell development in progress against ADLS with some familiar commands.

cat    chmod  close  du      get   help  ls     mv   quit  rmdir  touch
chgrp  chown  df     exists  head  info  mkdir  put  rm    tail

As with any Azure services, you can also use Azure Xpat Cli, Powershell & Web APIs.

Wednesday, November 2, 2016

What's trending in the world of GitHub and Open Source?

GitHub has a trove of information about its organizations, committers, repos, code and issues.

GitHub Archive maintains per-hour stats on 28 event types hooking into repo activities across the platform.  It includes things like a committers login, url, organization, followers, gists, starred repos, and a history of all your public coding activity.

The October 2016 archive table is 29M rows and 70GB of data.

In September 2016, Microsoft became the largest "open-source" contributor organization on Github, largely due to its custom API integration using Azure Services and rather elegant management system for its employees and repos.   If you can onboard all developers in a company the size of Microsoft, and automate repository setup and discovery, you will quickly become the largest contributor.

Microsoft beat out , Docker, Angular, Google, Atom, FortAwesome, Elastic, and even Apache.


What's trending in the world of GitHub and Open Source?

GitHub has a trove of information about its organizations, committers, repos, code and issues.

GitHub Archive maintains per-hour stats on 28 event types hooking into repo activities across the platform.  It includes things like a committers login, url, organization, followers, gists, starred repos, and a history of all your public coding activity.

The October 2016 archive table is 29M rows and 70GB of data.

In September 2016, Microsoft became the largest "open-source" contributor organization on Github, largely due to its custom API integration using Azure Services and rather elegant management system for its employees and repos.   If you can onboard all developers in a company the size of Microsoft, and automate repository setup and discovery, you will quickly become the largest contributor.

Microsoft beat out , Docker, Angular, Google, Atom, FortAwesome, Elastic, and even Apache.


Wednesday, June 22, 2016

Saturday, March 26, 2016

Performance and LLAP in Hive

Hive 2.0 introduces LLAP (Live Long and Process) functionality.  LLAP is a part of the Stinger.next initiative to address sub-second response times for interactive analytic queries.

The proposal for this feature is here.
https://issues.apache.org/jira/secure/attachment/12665704/LLAPdesigndocument.pdf

Interactive query response times are important when business intelligence tools directly query the Hive metastore.

When you execute a query in database engines like SQL Server or Oracle, the first time it can be expensive to run. Once the cache is warmed up, speed can increase dramatically.  This problem rears its head frequently with poor or non-reusable query execution plans that require the engine to go to disk and scan tables for every query rather than efficiently reusing plans and data caches.  System configurations, indexing strategies and statistics all contribute to the performance puzzle.

When you run a Hive distributed query using the Tez engine, it may spin up containers in YARN to process data in the cluster.  This process is relatively expensive to start up, and even though there is an option for Tez container re-use it isn't really caching fragments of the results or query access patterns for use across multiple sessions like SQL Server and other relational database engines provide.

There are many actions happening in the background, and it really doesn't make sense to do most of these actions for every interactive query.  JIT Optimization isn't really effective unless the Java process sticks around for awhile.

LLAP introduces optional daemons (long-running processes) on worker nodes to facilitate improvements to I/O, caching, and query fragment execution.  To reduce the complexity of installing the daemons on nodes, Slider can be used to distribute LLAP in the cluster as a long-running YARN application.

LLAP offers parallel execution of query fragments from different queries and sessions.

Metadata is cached in-memory on-heap, data is cached in column-chunks and persisted off heap, with YARN being responsible for management and allocation of resources.

More information

Stinger Next

Hadoop Summit 2015
http://www.slideshare.net/Hadoop_Summit/llap-longlived-execution-in-hive
Bay Area Hive Contributor Meetup Presentation.

Build LLAP and launch in a Slider container on HDP 2.3
https://gist.github.com/abajwa-hw/64bd19e3c93de97b73c6
https://www.snip2code.com/Snippet/832252/Build-LLAP-on-HDP-2-3




Sunday, March 6, 2016

Connection refused when starting MySQL

This appears to be a common issue with MySQL not accepting remote connections and cropped up for me a couple of times when installing Hortonworks HDP 2.4 and trying to use an existing MySQL for the Ambari database, Hive Metastore, Oozie and other Hadoop services.

Some steps taken to address the issue.

Confirm root access to mysql
https://www.digitalocean.com/community/questions/restoring-root-access-privileges-to-mysql

Check for running mysql processes and kill any that are running.
ps -A | grep mysql

Grant Remote Access
Change /etc/my.cnf adding a bind-address and port.
#/etc/my.cnf
bind-address=0.0.0.0 # this can be a static address if available.
port=3306

Restart service, in my case MariaDB on Centos7.
systemctl start mariadb

Check the log for errors.
cat /var/log/mariadb/mariadb.log

160306 12:04:52 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.44-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server


Create the Oozie and Hive Users & Databases.

Spin up the Hive Metastore.  Ambari will do this with a service restart or can test manually.
export HIVE_CONF_DIR=/usr/hdp/current/hive-metastore/conf/conf.server ; /usr/hdp/current/hive-metastore/bin/schematool -initSchema -dbType mysql -userName hive -passWord <enter_hive_password_here> -verbose

Helpful links

Saturday, February 20, 2016

Hive 2.0 includes HPL/SQL

HPL/SQL (formerly PL/HQL) is a language translation and execution layer developed by Dmitry Tolpeko.  It was introduced into the Hive source code in June, 2015 (JIRA-11055) and included this February, 2016 in Hive 2.0.  However, it doesn't need Hive to function.

http://www.hplsql.org/
Let me introduce PL/HQL, an open source tool that implements procedural SQL
can be used with any SQL-on-Hadoop solution.
Motivation:
- Writing the driver code using well-known procedural SQL (not bash)
that enables Hadoop to even more wider audience
- Allowing dynamic SQL, iterations, flow-of-control and SQL exception
handling
- Facilitating migration of RDBMS workload to Hadoop
Plans (besides extending syntax):
- Supporting CREATE PROCEDURE/FUNCTION/PACKAGE to reuse code
- Allowing connections to multiple databases (i.e. lookup tables in
relational databases)
- On-the-fly SQL conversion (SELECT i.e.), compatibility layer

Current steps to install in a Hortonworks HDP 2.3.2 environment.  Substitute for the version you are using.

Download and Install
tar xvf hplsql-0.3.13.tar.gzz /usr/hdp/2.3.2.0-2950/
ln -s /usr/hdp/2.3.2.0-2950/hplsql-0.3.13/ /usr/hdp/current/hplsql

Configure HADOOP_CLASSPATH
Edit /usr/hdp/current/hplsql/hplsql
Replace /usr/lib/ with /usr/hdp/2.3.2.0-2950/

Add to Path (in this case globally)
echo "PATH=${PATH}:/usr/hdp/current/hplsql" > /etc/profile.d/hplsql-path.sh && chmod 755 /etc/profile.d/hplsql-path.sh

Configure plhql-site.xml
To configure Hive connection settings, and connectivity to other databases (mySQL, Teradata, IBM DB/2, Oracle, MSSQL)

Test from Command Line
hplsql --version

Get the previous date:
START=$(hplsql -e 'CURRENT_DATE - 1')
Copy table to a file:
COPY (SELECT id, name FROM sales.users WHERE local_dt = CURRENT_DATE) 
  TO /data/users.txt DELIMITER '\t';
Copy table from default connection (Hive) to Teradata connection
COPY sales.users TO sales.users2 AT tdconn;
Log to mySQL from Hive
MAP OBJECT log TO log.log_data AT mysqlconn;
 
DECLARE cnt INT;
SELECT count(*) INTO cnt FROM sales.users WHERE local_dt = CURRENT_DATE;
 
INSERT INTO log (message) VALUES ('Number of users: ' || cnt);  
Compare Hive table totals to mySQL
CMP SUM sales.users WHERE local_dt = CURRENT_DATE, users_daily AT mysqlconn;  
Great addition to the Hive codebase.

Thursday, January 14, 2016

Working with Jupyter Notebooks

The iPython Notebook and its offshoots, Jupyter, Zeppelin, Spark, etc. are very useful for learning, data science, collaboration, data visualization, and instant information using a REPL (Read-Eval-Print-Loop) interface.  A REPL allows you to run and compile code line-by-line, and in the case of Spark and other Hadoop tools run code against a cluster of machines.

A good history of the iPython notebook from Fernando Perez, creator of iPython.
"We coded frantically in parallel: one of us wrote the kernel and the other the client, and we'd debug one of them while leaving the other running in the meantime.  It was the perfect blend of pair programming and simultaneous development, and in just two days we had a prototype of a python shell over zmq working."


As of this writing, Jupyter, the latest incarnation of iPython's notebook, has over 50 interpreters to parse and compile code within a notebook interface.

Further to the last blog post, search GitHub for Jupyter Notebooks on GitHub to see more examples.
filename:ipynb

https://github.com/search?l=jupyter-notebook&q=filename%3Aipynb&type=Code&utf8=%E2%9C%93

Here are some interesting examples on Github:

Parsing Apache Logs with Spark
Interactive C# Notebook
Predicting Airline Delays with Pig and Python

Binder is just one host of notebooks, an example using CERN's ROOT framework to run C++ in a browser.
http://app.mybinder.org/2191543109/notebooks/index.ipynb
http://app.mybinder.org/2191543109/notebooks/notebooks/ROOT_Example.ipynb

Sunday, January 3, 2016

Configs and GitHub Viz

In the case of open-source projects, you may need to dig further into what a particular configuration setting does.  If the documentation does not give you enough detailed information on the implementation, you can also trace the configuration details by searching for the file or getting the project from Github or SVN.

Some of the common Hadoop projects configuration code.

Pig configuration
Hive configuration
Sqoop configuration
Flume configuration
Kafka configuration

Github allows you to scope your searches which is useful for narrowing down your search to specific files.

Searching code is documented here.  In the search box, you can search by filename:<myfile> or <myfile> in:path to track down particular files.    You can also search by language, this searches for Scala files.

At the time of this writing, there's some interesting stats available just by looking at language of repositories in Github

  • There are 1.5m Java repos with ElasticSearch, Android Universal Image Loader and Reactive Extensions for the JVM showing up as the top 3 best matches.
  • There are nearly 900k Python repos with httpie, Flask, the Django framework and the Awesome Python library coming in the top 4 best matches.
  • There are 400k C# repos with the .NET framework, SignalR and Mono in the top 3.
  • There are 421k C repos with Linux being the best match.
  • There are 60k Scala repos with PredictionIO, the Play Framework and Scala itself showing up as top 3 best matches.

Much cooler than just searching is the GitHub Visualizer created by Artem Zukov using D3js.

Apache's visualization shows an assortment of languages in their repos.

The Hive repo's contributors and file extensions

Friday, December 11, 2015

Finding Meetup Resources and Presentations

The Bay Area Hadoop User Group meetup has over 5.2k members.  Meetups like these are hugely popular and provide great resources, slides, etc.

Searching Google brings back 820+ results for PDFs related to Hadoop from Meetup files.  Lots of great information here.

Google inurl:files.meetup.com Hadoop for Hadoop resources or any other meetup topics you might find interesting.  Over 76,000 resources by searching for just inurl:files.meetup.com.

Filling up the Kindle...

Friday, November 6, 2015

Closer look at U-SQL, MIcrosoft's HiveQL

Microsoft U-SQL is the query language used on Azure Data Lake Analytics services.  Based on SCOPE and Cosmos, which has been around since at least 2008, It combines C# type / expressions functionality, schema-on-read, custom processors and reducers into a SQL-like ETL and output language.

Keywords need to be upper case.  The where clause uses C#-style == syntax.  Rows can contain up to 4MB of data per row.

U-SQL supports SQL.MAP<k,v> and SQL.ARRAY(<T>)

U-SQL supports inline C# expressions, UDFs, UDAs to custom aggregate, UDOs to generate process and consume rowsets.

U-DOs are user-defined operators build with Visual Studio.
https://azure.microsoft.com/pt-pt/documentation/articles/data-lake-analytics-u-sql-develop-user-defined-operators/

It will be interesting to see if this language makes it into SQL Server itself.  Extractors and Outputters would be highly useful to replace some of the functionality of SSIS.

I built a similar tool a few years ago for schema-on-read.  It brought CSV files into BLOB columns in SQL Server (read my article on BLOBs on SQL Server Central)  and allowed you to query them by converting to nvarchar(max), applying a schema, and then outputting to a table.

Kind of felt like a data lake at the time.... though it wasn't massively parallel and didn't have any kind of map-reduce job spinning up.  Then MS introduced the filestream object...


Tuesday, October 27, 2015

Virtualbox error - Kernel driver after Centos Update

On my Centos7 box, after an update I lost the kernel sources.  Virtualbox would no longer start a VM due to updates requiring a recompile.

Running  usr/sbin/rcvboxdrv setup 
showed some errors in cat /var/log/vbox-install.log
After removing & reinstalling kernel sources and running above command again, Virtualbox recompiled the kernel.

yum remove kernel-devel gcc
yum install kernel-devel gcc

Unfortunately this may remove some dependencies also, backup your environment!

Then had to reboot to avoid the "Creating a process..." message for VirtualBox.

Friday, October 23, 2015

ZSH and Oh-My-Zsh Shell Plugins

I remember a long, long time ago, in a galaxy far, far away, I played around with setting up custom DOS prompts.  Memories of Ansi.sys and custom ANSI art come streaming into my brain...



Forget all that.  On CentOS, these two commands will install the Z Shell and Oh-My-Zsh

yum install zsh
sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

Tab allows you to visualize potential paths, running processes, ls without hitting enter, and other awesomeness.

There are one or two Themes and Plugins available.

Some laundry lists, tricks and cheat sheets.

If you're running Windows, 720MB of Babun will get you Zsh among other things...

Sunday, October 4, 2015

Hue on HDInsight and HDInsight on Linux

Microsoft might have just made Data Lakes a commodity offering.

Convergence with the Linux realm is happening again at Microsoft with the introduction of Hue on HDInsight (a graphical interface for Hadoop/HDP) and HDInsight on Linux. Hue has been around for quite awhile in the Apache realm and in most Hadoop distros, glad do see HDInsight is finally getting a user-friendly GUI.

Another announcement introduces U-SQL (see Michael Rys (@MikeDoesBigData) Introducing  U-SQL).  A SQL-like, Hive/Pig/Grep/Awk combo language to ELT+QE (Extract/Load/Transform + Query/Extract) on top of the HDInsight Big Data Lake.

The biggest announcement is the Azure Data Lake itself...




Shared folders with Virtualbox and Centos 7

Got a build error with VirtualBox add-ins and HDP Sandbox 2.2.

Building the main Guest Additions module   [FAILED]

Fixed by checking the log file for errors,  Missing kernel directory issue.

$ export KERN_DIR=/lib/modules/2.6.32-504.1.3.el6.x86_64/

$ cd /usr/src/kernels

$ ln -s /usr/src/kernels/2.6.32-573.7.1.el6.x86_64/ 2.6.32-504.1.3.el6.x86_64

Thursday, September 24, 2015

Multi tab Putty

Just as it sounds, multiple tabbed putty.
http://ttyplus.com/

And for Windows, there's Clover
http://ejie.me/