Hortonworks Data Platform Apache Spark Component Guide (December 15, 2017)

Total Page:16

File Type:pdf, Size:1020Kb

Hortonworks Data Platform Apache Spark Component Guide (December 15, 2017) Hortonworks Data Platform Apache Spark Component Guide (December 15, 2017) docs.hortonworks.com Hortonworks Data Platform December 15, 2017 Hortonworks Data Platform: Apache Spark Component Guide Copyright © 2012-2017 Hortonworks, Inc. Some rights reserved. The Hortonworks Data Platform, powered by Apache Hadoop, is a massively scalable and 100% open source platform for storing, processing and analyzing large volumes of data. It is designed to deal with data from many sources and formats in a very quick, easy and cost-effective manner. The Hortonworks Data Platform consists of the essential set of Apache Hadoop projects including MapReduce, Hadoop Distributed File System (HDFS), HCatalog, Pig, Hive, HBase, ZooKeeper and Ambari. Hortonworks is the major contributor of code and patches to many of these projects. These projects have been integrated and tested as part of the Hortonworks Data Platform release process and installation and configuration tools have also been included. Unlike other providers of platforms built using Apache Hadoop, Hortonworks contributes 100% of our code back to the Apache Software Foundation. The Hortonworks Data Platform is Apache-licensed and completely open source. We sell only expert technical support, training and partner-enablement services. All of our technology is, and will remain, free and open source. Please visit the Hortonworks Data Platform page for more information on Hortonworks technology. For more information on Hortonworks services, please visit either the Support or Training page. Feel free to contact us directly to discuss your specific needs. Except where otherwise noted, this document is licensed under Creative Commons Attribution ShareAlike 4.0 License. http://creativecommons.org/licenses/by-sa/4.0/legalcode ii Hortonworks Data Platform December 15, 2017 Table of Contents 1. Analyzing Data with Apache Spark .............................................................................. 1 2. Installing Spark ............................................................................................................ 3 2.1. Installing Spark Using Ambari ........................................................................... 3 2.2. Installing Spark Manually .................................................................................. 6 2.3. Verifying Spark Configuration for Hive Access ................................................... 7 2.4. Installing the Spark Thrift Server After Deploying Spark ..................................... 7 2.5. Validating the Spark Installation ....................................................................... 8 3. Configuring Spark ........................................................................................................ 9 3.1. Configuring the Spark Thrift Server ................................................................... 9 3.1.1. Enabling Spark SQL User Impersonation for the Spark Thrift Server .......... 9 3.1.2. Customizing the Spark Thrift Server Port .............................................. 11 3.2. Configuring the Livy Server ............................................................................. 11 3.2.1. Configuring SSL for the Livy Server ....................................................... 11 3.2.2. Configuring High Availability for the Livy Server .................................... 12 3.3. Configuring the Spark History Server ............................................................... 12 3.4. Configuring Dynamic Resource Allocation ........................................................ 12 3.4.1. Customizing Dynamic Resource Allocation Settings on an Ambari- Managed Cluster ............................................................................................ 13 3.4.2. Configuring Cluster Dynamic Resource Allocation Manually ................... 14 3.4.3. Configuring a Job for Dynamic Resource Allocation .............................. 15 3.4.4. Dynamic Resource Allocation Properties ............................................... 15 3.5. Configuring Spark for Wire Encryption ............................................................ 16 3.5.1. Configuring Spark for Wire Encryption ................................................. 17 3.5.2. Configuring Spark2 for Wire Encryption ................................................ 18 3.6. Configuring Spark for a Kerberos-Enabled Cluster ............................................ 20 3.6.1. Configuring the Spark History Server .................................................... 21 3.6.2. Configuring the Spark Thrift Server ...................................................... 21 3.6.3. Setting Up Access for Submitting Jobs .................................................. 21 4. Running Spark ........................................................................................................... 24 4.1. Specifying Which Version of Spark to Run ....................................................... 24 4.2. Running Sample Spark 1.x Applications ........................................................... 25 4.2.1. Spark Pi ................................................................................................ 26 4.2.2. WordCount .......................................................................................... 27 4.3. Running Sample Spark 2.x Applications ........................................................... 28 4.3.1. Spark Pi ................................................................................................ 29 4.3.2. WordCount .......................................................................................... 30 5. Submitting Spark Applications Through Livy ............................................................... 32 5.1. Using Livy with Spark Versions 1 and 2 ............................................................ 32 5.2. Using Livy with Interactive Notebooks ............................................................. 33 5.3. Using the Livy API to Run Spark Jobs: Overview ............................................... 34 5.4. Running an Interactive Session With the Livy API ............................................. 35 5.4.1. Livy Objects for Interactive Sessions ...................................................... 36 5.4.2. Setting Path Variables for Python ......................................................... 37 5.4.3. Livy API Reference for Interactive Sessions ............................................ 38 5.5. Submitting Batch Applications Using the Livy API ............................................ 40 5.5.1. Livy Batch Object .................................................................................. 41 5.5.2. Livy API Reference for Batch Jobs ......................................................... 41 6. Running PySpark in a Virtual Environment ................................................................. 43 iii Hortonworks Data Platform December 15, 2017 7. Automating Spark Jobs with Oozie Spark Action ........................................................ 44 7.1. Configuring Oozie Spark Action for Spark 1 .................................................... 44 7.2. Configuring Oozie Spark Action for Spark 2 .................................................... 46 8. Developing Spark Applications ................................................................................... 49 8.1. Using the Spark DataFrame API ...................................................................... 49 8.2. Using Spark SQL .............................................................................................. 51 8.2.1. Accessing Spark SQL through the Spark Shell ........................................ 52 8.2.2. Accessing Spark SQL through JDBC or ODBC: Prerequisites .................... 52 8.2.3. Accessing Spark SQL through JDBC ....................................................... 53 8.2.4. Accessing Spark SQL through ODBC ..................................................... 54 8.2.5. Spark SQL User Impersonation ............................................................. 54 8.3. Calling Hive User-Defined Functions ................................................................. 61 8.3.1. Using Built-in UDFs ............................................................................... 61 8.3.2. Using Custom UDFs .............................................................................. 62 8.4. Using Spark Streaming .................................................................................... 62 8.4.1. Prerequisites ......................................................................................... 63 8.4.2. Building and Running a Secure Spark Streaming Job ............................. 63 8.4.3. Running Spark Streaming Jobs on a Kerberos-Enabled Cluster ............... 65 8.4.4. Sample pom.xml File for Spark Streaming with Kafka .......................... 66 8.5. HBase Data on Spark with Connectors ............................................................ 68 8.5.1. Selecting a Connector ........................................................................... 69 8.5.2. Using the Connector with Apache Phoenix ........................................... 70 8.6. Accessing HDFS Files from Spark ..................................................................... 70 8.6.1. Specifying Compression ........................................................................ 70 8.6.2. Accessing HDFS from PySpark ............................................................... 70 8.7. Accessing ORC Data in Hive Tables
Recommended publications
  • Java Linksammlung
    JAVA LINKSAMMLUNG LerneProgrammieren.de - 2020 Java einfach lernen (klicke hier) JAVA LINKSAMMLUNG INHALTSVERZEICHNIS Build ........................................................................................................................................................... 4 Caching ....................................................................................................................................................... 4 CLI ............................................................................................................................................................... 4 Cluster-Verwaltung .................................................................................................................................... 5 Code-Analyse ............................................................................................................................................. 5 Code-Generators ........................................................................................................................................ 5 Compiler ..................................................................................................................................................... 6 Konfiguration ............................................................................................................................................. 6 CSV ............................................................................................................................................................. 6 Daten-Strukturen
    [Show full text]
  • Oracle Metadata Management V12.2.1.3.0 New Features Overview
    An Oracle White Paper October 12 th , 2018 Oracle Metadata Management v12.2.1.3.0 New Features Overview Oracle Metadata Management version 12.2.1.3.0 – October 12 th , 2018 New Features Overview Disclaimer This document is for informational purposes. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described in this document remains at the sole discretion of Oracle. This document in any form, software or printed matter, contains proprietary information that is the exclusive property of Oracle. This document and information contained herein may not be disclosed, copied, reproduced, or distributed to anyone outside Oracle without prior written consent of Oracle. This document is not part of your license agreement nor can it be incorporated into any contractual agreement with Oracle or its subsidiaries or affiliates. 1 Oracle Metadata Management version 12.2.1.3.0 – October 12 th , 2018 New Features Overview Table of Contents Executive Overview ............................................................................ 3 Oracle Metadata Management 12.2.1.3.0 .......................................... 4 METADATA MANAGER VS METADATA EXPLORER UI .............. 4 METADATA HOME PAGES ........................................................... 5 METADATA QUICK ACCESS ........................................................ 6 METADATA REPORTING .............................................................
    [Show full text]
  • Oracle Big Data SQL Release 4.1
    ORACLE DATA SHEET Oracle Big Data SQL Release 4.1 The unprecedented explosion in data that can be made useful to enterprises – from the Internet of Things, to the social streams of global customer bases – has created a tremendous opportunity for businesses. However, with the enormous possibilities of Big Data, there can also be enormous complexity. Integrating Big Data systems to leverage these vast new data resources with existing information estates can be challenging. Valuable data may be stored in a system separate from where the majority of business-critical operations take place. Moreover, accessing this data may require significant investment in re-developing code for analysis and reporting - delaying access to data as well as reducing the ultimate value of the data to the business. Oracle Big Data SQL enables organizations to immediately analyze data across Apache Hadoop, Apache Kafka, NoSQL, object stores and Oracle Database leveraging their existing SQL skills, security policies and applications with extreme performance. From simplifying data science efforts to unlocking data lakes, Big Data SQL makes the benefits of Big Data available to the largest group of end users possible. KEY FEATURES Rich SQL Processing on All Data • Seamlessly query data across Oracle Oracle Big Data SQL is a data virtualization innovation from Oracle. It is a new Database, Hadoop, object stores, architecture and solution for SQL and other data APIs (such as REST and Node.js) on Kafka and NoSQL sources disparate data sets, seamlessly integrating data in Apache Hadoop, Apache Kafka, • Runs all Oracle SQL queries without modification – preserving application object stores and a number of NoSQL databases with data stored in Oracle Database.
    [Show full text]
  • Hybrid Transactional/Analytical Processing: a Survey
    Hybrid Transactional/Analytical Processing: A Survey Fatma Özcan Yuanyuan Tian Pınar Tözün IBM Resarch - Almaden IBM Research - Almaden IBM Research - Almaden [email protected] [email protected] [email protected] ABSTRACT To understand HTAP, we first need to look into OLTP The popularity of large-scale real-time analytics applications and OLAP systems and how they progressed over the years. (real-time inventory/pricing, recommendations from mobile Relational databases have been used for both transaction apps, fraud detection, risk analysis, IoT, etc.) keeps ris- processing as well as analytics. However, OLTP and OLAP ing. These applications require distributed data manage- systems have very different characteristics. OLTP systems ment systems that can handle fast concurrent transactions are identified by their individual record insert/delete/up- (OLTP) and analytics on the recent data. Some of them date statements, as well as point queries that benefit from even need running analytical queries (OLAP) as part of indexes. One cannot think about OLTP systems without transactions. Efficient processing of individual transactional indexing support. OLAP systems, on the other hand, are and analytical requests, however, leads to different optimiza- updated in batches and usually require scans of the tables. tions and architectural decisions while building a data man- Batch insertion into OLAP systems are an artifact of ETL agement system. (extract transform load) systems that consolidate and trans- For the kind of data processing that requires both ana- form transactional data from OLTP systems into an OLAP lytics and transactions, Gartner recently coined the term environment for analysis. Hybrid Transactional/Analytical Processing (HTAP).
    [Show full text]
  • Schema Evolution in Hive Csv
    Schema Evolution In Hive Csv Which Orazio immingled so anecdotally that Joey take-over her seedcake? Is Antin flowerless when Werner hypersensitise apodictically? Resolutely uraemia, Burton recalesced lance and prying frontons. In either format are informational and the file to collect important consideration to persist our introduction above image file processing with hadoop for evolution in Capabilities than that? Data while some standardized form scale as CSV TSV XML or JSON files. Have involved at each of spark sql engine for data in with malformed types are informational and to finish rendering before invoking file with. Spark csv files just storing data that this object and decision intelligence analytics queries to csv in bulk into another tab of lot of different in. Next button to choose to write that comes at query returns all he has very useful tutorial is coalescing around parquet evolution in hive schema evolution and other storage costs, query across partitions? Bulk load into an array types across some schema changes, which the views. Encrypt data come from the above schema evolution? This article helpful, only an error is more specialized for apis anywhere with the binary encoded in better than a dict where. Provide an evolution in column to manage data types and writing, analysts will be read json, which means the. This includes schema evolution partition evolution and table version rollback all. Apache hive to simplify your google cloud storage, the size of data cleansing, in schema hive csv files cannot be able to. Irs prior to create hive tables when querying using this guide for schema evolution in hive.
    [Show full text]
  • Benchmarking Distributed Data Warehouse Solutions for Storing Genomic Variant Information
    Research Collection Journal Article Benchmarking distributed data warehouse solutions for storing genomic variant information Author(s): Wiewiórka, Marek S.; Wysakowicz, David P.; Okoniewski, Michał J.; Gambin, Tomasz Publication Date: 2017-07-11 Permanent Link: https://doi.org/10.3929/ethz-b-000237893 Originally published in: Database 2017, http://doi.org/10.1093/database/bax049 Rights / License: Creative Commons Attribution 4.0 International This page was generated automatically upon download from the ETH Zurich Research Collection. For more information please consult the Terms of use. ETH Library Database, 2017, 1–16 doi: 10.1093/database/bax049 Original article Original article Benchmarking distributed data warehouse solutions for storing genomic variant information Marek S. Wiewiorka 1, Dawid P. Wysakowicz1, Michał J. Okoniewski2 and Tomasz Gambin1,3,* 1Institute of Computer Science, Warsaw University of Technology, Nowowiejska 15/19, Warsaw 00-665, Poland, 2Scientific IT Services, ETH Zurich, Weinbergstrasse 11, Zurich 8092, Switzerland and 3Department of Medical Genetics, Institute of Mother and Child, Kasprzaka 17a, Warsaw 01-211, Poland *Corresponding author: Tel.: þ48693175804; Fax: þ48222346091; Email: [email protected] Citation details: Wiewiorka,M.S., Wysakowicz,D.P., Okoniewski,M.J. et al. Benchmarking distributed data warehouse so- lutions for storing genomic variant information. Database (2017) Vol. 2017: article ID bax049; doi:10.1093/database/bax049 Received 15 September 2016; Revised 4 April 2017; Accepted 29 May 2017 Abstract Genomic-based personalized medicine encompasses storing, analysing and interpreting genomic variants as its central issues. At a time when thousands of patientss sequenced exomes and genomes are becoming available, there is a growing need for efficient data- base storage and querying.
    [Show full text]
  • Hortonworks Data Platform Release Notes (October 30, 2017)
    Hortonworks Data Platform Release Notes (October 30, 2017) docs.cloudera.com Hortonworks Data Platform October 30, 2017 Hortonworks Data Platform: Release Notes Copyright © 2012-2017 Hortonworks, Inc. Some rights reserved. The Hortonworks Data Platform, powered by Apache Hadoop, is a massively scalable and 100% open source platform for storing, processing and analyzing large volumes of data. It is designed to deal with data from many sources and formats in a very quick, easy and cost-effective manner. The Hortonworks Data Platform consists of the essential set of Apache Software Foundation projects that focus on the storage and processing of Big Data, along with operations, security, and governance for the resulting system. This includes Apache Hadoop -- which includes MapReduce, Hadoop Distributed File System (HDFS), and Yet Another Resource Negotiator (YARN) -- along with Ambari, Falcon, Flume, HBase, Hive, Kafka, Knox, Oozie, Phoenix, Pig, Ranger, Slider, Spark, Sqoop, Storm, Tez, and ZooKeeper. Hortonworks is the major contributor of code and patches to many of these projects. These projects have been integrated and tested as part of the Hortonworks Data Platform release process and installation and configuration tools have also been included. Unlike other providers of platforms built using Apache Hadoop, Hortonworks contributes 100% of our code back to the Apache Software Foundation. The Hortonworks Data Platform is Apache-licensed and completely open source. We sell only expert technical support, training and partner-enablement services. All of our technology is, and will remain, free and open source. Please visit the Hortonworks Data Platform page for more information on Hortonworks technology. For more information on Hortonworks services, please visit either the Support or Training page.
    [Show full text]
  • Storage and Ingestion Systems in Support of Stream Processing
    Storage and Ingestion Systems in Support of Stream Processing: A Survey Ovidiu-Cristian Marcu, Alexandru Costan, Gabriel Antoniu, María Pérez-Hernández, Radu Tudoran, Stefano Bortoli, Bogdan Nicolae To cite this version: Ovidiu-Cristian Marcu, Alexandru Costan, Gabriel Antoniu, María Pérez-Hernández, Radu Tudoran, et al.. Storage and Ingestion Systems in Support of Stream Processing: A Survey. [Technical Report] RT-0501, INRIA Rennes - Bretagne Atlantique and University of Rennes 1, France. 2018, pp.1-33. hal-01939280v2 HAL Id: hal-01939280 https://hal.inria.fr/hal-01939280v2 Submitted on 14 Dec 2018 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Storage and Ingestion Systems in Support of Stream Processing: A Survey Ovidiu-Cristian Marcu, Alexandru Costan, Gabriel Antoniu, María S. Pérez-Hernández, Radu Tudoran, Stefano Bortoli, Bogdan Nicolae TECHNICAL REPORT N° 0501 November 2018 Project-Team KerData ISSN 0249-0803 ISRN INRIA/RT--0501--FR+ENG Storage and Ingestion Systems in Support of Stream Processing: A Survey Ovidiu-Cristian Marcu∗, Alexandru
    [Show full text]
  • Enabling Geospatial in Big Data Lakes and Databases with Locationtech Geomesa
    Enabling geospatial in big data lakes and databases with LocationTech GeoMesa ApacheCon@Home 2020 James Hughes James Hughes ● CCRi’s Director of Open Source Programs ● Working in geospatial software on the JVM for the last 8 years ● GeoMesa core committer / product owner ● SFCurve project lead ● JTS committer ● Contributor to GeoTools and GeoServer ● What type? Big Geospatial Data ● What volume? Problem Statement for today: Problem: How do we handle “big” geospatial data? Problem Statement for today: Problem: How do we handle “big” geospatial data? First refinement: What type of data do are we interested in? Vector Raster Point Cloud Problem Statement for today: Problem: How do we handle “big” geospatial data? First refinement: What type of data do are we interested in? Vector Raster Point Cloud Problem Statement for today: Problem: How do we handle “big” vector geospatial data? Second refinement: How much data is “big”? What is an example? GDELT: Global Database of Event, Language, and Tone “The GDELT Event Database records over 300 categories of physical activities around the world, from riots and protests to peace appeals and diplomatic exchanges, georeferenced to the city or mountaintop, across the entire planet dating back to January 1, 1979 and updated every 15 minutes.” ~225-250 million records Problem Statement for today: Problem: How do we handle “big” vector geospatial data? Second refinement: How much data is “big”? What is an example? Open Street Map: OpenStreetMap is a collaborative project to create a free editable map of the world. The geodata underlying the map is considered the primary output of the project.
    [Show full text]
  • An Introduction to Big Data Technologies
    University of the Aegean Information and Communication Systems Engineering Intelligent Information Systems Thesis An Introduction to Big Data Technologies George Peppas supervised by Dr. Manolis Maragkoudakis October 18, 2016 Contents 1 Introduction 3 1.1 Why Big Data . .3 1.2 Big Data Applications Today . .9 1.2.1 Bioinformatics . .9 1.2.2 Finance . 10 1.2.3 Commerce . 12 2 Related work 15 2.1 Big Data Programming Models . 15 2.1.1 In-Memory Database Systems . 15 2.1.2 MapReduce Systems . 16 2.1.3 Bulk Synchronous Parallel (BSP) Systems . 22 2.1.4 Big Data and Transactional Systems . 22 2.2 Big Data Platforms . 23 2.2.1 Hortonwork . 23 2.2.2 Cloudera . 24 2.3 Miscellaneous technologies stack . 24 2.3.1 Mahout . 24 2.3.2 Apache Spark and MLlib . 27 2.3.3 Apache ORC . 29 2.3.4 Hadoop Distributed File System . 29 2.3.5 Hive . 33 2.3.6 Pig . 36 2.3.7 HBase . 37 2.3.8 Flume . 38 2.3.9 Oozie . 39 2.3.10 Ambari . 39 2.3.11 Avro . 40 2.3.12 Sqoop . 41 2.3.13 HCatalog . 43 2.3.14 BigTop . 47 2.4 Data Mining and Machine Learning introduction . 47 2.4.1 Data Mining . 48 2.4.2 Machine Learning . 49 2.5 Data Mining and Machine Learning Tools . 51 2.5.1 WEKA . 51 2.5.2 SciKit-Learn . 52 2.5.3 RapidMiner . 53 2.5.4 Spark MLlib . 53 2.5.5 H2O Flow .
    [Show full text]
  • Spark Guide Mar 1, 2016
    docs.hortonworks.com Spark Guide Mar 1, 2016 Spark Guide: Hortonworks Data Platform Copyright © 2012-2016 Hortonworks, Inc. Some rights reserved. The Hortonworks Data Platform, powered by Apache Hadoop, is a massively scalable and 100% open source platform for storing, processing and analyzing large volumes of data. It is designed to deal with data from many sources and formats in a very quick, easy and cost-effective manner. The Hortonworks Data Platform consists of the essential set of Apache Hadoop projects including MapReduce, Hadoop Distributed File System (HDFS), HCatalog, Pig, Hive, HBase, ZooKeeper and Ambari. Hortonworks is the major contributor of code and patches to many of these projects. These projects have been integrated and tested as part of the Hortonworks Data Platform release process and installation and configuration tools have also been included. Unlike other providers of platforms built using Apache Hadoop, Hortonworks contributes 100% of our code back to the Apache Software Foundation. The Hortonworks Data Platform is Apache-licensed and completely open source. We sell only expert technical support, training and partner-enablement services. All of our technology is, and will remain, free and open source. Please visit the Hortonworks Data Platform page for more information on Hortonworks technology. For more information on Hortonworks services, please visit either the Support or Training page. Feel free to contact us directly to discuss your specific needs. Except where otherwise noted, this document is licensed under Creative Commons Attribution ShareAlike 3.0 License. http://creativecommons.org/licenses/by-sa/3.0/legalcode ii Spark Guide Mar 1, 2016 Table of Contents 1.
    [Show full text]
  • Release Notes Date Published: 2020-10-13 Date Modified
    Cloudera Runtime 7.1.4 Release Notes Date published: 2020-10-13 Date modified: https://docs.cloudera.com/ Legal Notice © Cloudera Inc. 2021. All rights reserved. The documentation is and contains Cloudera proprietary information protected by copyright and other intellectual property rights. No license under copyright or any other intellectual property right is granted herein. Copyright information for Cloudera software may be found within the documentation accompanying each component in a particular release. Cloudera software includes software from various open source or other third party projects, and may be released under the Apache Software License 2.0 (“ASLv2”), the Affero General Public License version 3 (AGPLv3), or other license terms. Other software included may be released under the terms of alternative open source licenses. Please review the license and notice files accompanying the software for additional licensing information. Please visit the Cloudera software product page for more information on Cloudera software. For more information on Cloudera support services, please visit either the Support or Sales page. Feel free to contact us directly to discuss your specific needs. Cloudera reserves the right to change any products at any time, and without notice. Cloudera assumes no responsibility nor liability arising from the use of products, except as expressly agreed to in writing by Cloudera. Cloudera, Cloudera Altus, HUE, Impala, Cloudera Impala, and other Cloudera marks are registered or unregistered trademarks in the United States and other countries. All other trademarks are the property of their respective owners. Disclaimer: EXCEPT AS EXPRESSLY PROVIDED IN A WRITTEN AGREEMENT WITH CLOUDERA, CLOUDERA DOES NOT MAKE NOR GIVE ANY REPRESENTATION, WARRANTY, NOR COVENANT OF ANY KIND, WHETHER EXPRESS OR IMPLIED, IN CONNECTION WITH CLOUDERA TECHNOLOGY OR RELATED SUPPORT PROVIDED IN CONNECTION THEREWITH.
    [Show full text]