Friday, March 25, 2022

Create Dataframe Or Table In R

Spark SQL can convert an RDD of Row objects to a DataFrame, inferring the datatypes. Rows are constructed by passing a list of key/value pairs as kwargs to the Row class. The keys of this list define the column names of the table, and the types are inferred by looking at the first row.

create dataframe or table in r - Spark SQL can convert an RDD of Row objects to a DataFrame

Since we currently only look at the first row, it is important that there is no missing data in the first row of the RDD. In future versions we plan to more completely infer the schema by looking at more data, similar to the inference that is performed on JSON files. The imported data is stored directly as a data.table. As you see from the above output, the data.table inherits from a data.frame class and therefore is a data.frame by itself. So, functions that accept a data.frame will work just fine on data.table as well. Because the dataset we imported was small, the read.csv()'s speed was good enough.

create dataframe or table in r - Rows are constructed by passing a list of keyvalue pairs as kwargs to the Row class

However, the speed gain becomes evident when you import a large dataset . To get a flavor of how fast fread() is, run the below code. The time taken by fread() and read.csv() functions gets printed in console. The package tidyr addresses the common problem of wanting to reshape your data for plotting and usage by different R functions.

create dataframe or table in r - The keys of this list define the column names of the table

For example, sometimes we want data sets where we have one row per measurement. Moving back and forth between these formats is non-trivial, and tidyr gives you tools for this and more sophisticated data manipulation. In addition to the basic SQLContext, you can also create a HiveContext, which provides a superset of the functionality provided by the basic SQLContext. Additional features include the ability to write queries using the more complete HiveQL parser, access to Hive UDFs, and the ability to read data from Hive tables. If these dependencies are not a problem for your application then using HiveContextis recommended for the 1.3 release of Spark.

create dataframe or table in r - Since we currently only look at the first row

Future releases will focus on bringing SQLContext up to feature parity with a HiveContext. Notice that the data types of the partitioning columns are automatically inferred. Currently, numeric data types and string type are supported.

create dataframe or table in r - In future versions we plan to more completely infer the schema by looking at more data

Sometimes users may not want to automatically infer the data types of the partitioning columns. For these use cases, the automatic type inference can be configured by spark.sql.sources.partitionColumnTypeInference.enabled, which is default totrue. When type inference is disabled, string type will be used for the partitioning columns.

create dataframe or table in r - The imported data is stored directly as a data

The default behavior of read.table is to convert character variables to factors. The variable as.is controls the conversion of columns not otherwise specified by colClasses. Its value is either a vector of logicals , or a vector of numeric or character indices which specify which columns should not be converted to factors. Next, lets see how to write functions within a data.table square brackets. Let's suppose, you want to compute the mean of all the variables, grouped by 'cyl'.

create dataframe or table in r - As you see from the above output

You can create the columns one by one by writing by hand. Or, you can use the lapply() function to do it all in one go. But `lapply()` takes the data.frame as the first argument. You can use the .SD object as the first argument for lapply(). It is nothing but a data.table that contains all the columns of the original datatable except the column specified in 'by' argument. Let's suppose you have the column names in a character vector and want to select those columns alone from the data.table.

create dataframe or table in r - So

The way you work with data.tables is quite different from how you'd work with data.frames. Let's understand these difference first while you gain mastery over this fantastic package. The fread(), short for fast read is data.tables version of read.csv(). Like read.csv() it works for a file in your local computer as well as file hosted on the internet. Let's import the mtcars dataset stored as a csv file.

create dataframe or table in r - Because the dataset we imported was small

All data types of Spark SQL are located in the package oforg.apache.spark.sql.types. To access or create a data type, please use factory methods provided inorg.apache.spark.sql.types.DataTypes. Spark SQL can automatically infer the schema of a JSON dataset and load it as a DataFrame. Using the jsonFile function, which loads data from a directory of JSON files where each line of the files is a JSON object. The Scala interface for Spark SQL supports automatically converting an RDD containing case classes to a DataFrame. The names of the arguments to the case class are read using reflection and become the names of the columns.

create dataframe or table in r - However

Case classes can also be nested or contain complex types such as Sequences or Arrays. This RDD can be implicitly converted to a DataFrame and then be registered as a table. Quotes are interpreted in all fields, so a column of values like "42" will result in an integer column. Note that the annual column is first initialized with NA . Inside the for loop, the annual column is then filled with the calculated rainfall sums. Situations when we need to go over subsets of a dataset, process those subsets, then combine the results back to a single object, are very common in data processing.

create dataframe or table in r - To get a flavor of how fast fread is

A for loop is the default approach for such tasks, unless there is a "shortcut" that we may prefer, such as the apply function (Section 4.5). For example, we will come back to for loops when separately processing raster layers for several time periods (Section 11.3.2). CreateDataFrame() has another signature which takes the RDD type and schema for column names as arguments.

create dataframe or table in r - The time taken by fread and read

To use this first we need to convert our "rdd" object from RDD to RDD and define a schema using StructType & StructField. If row.names is not specified and the header line has one less entry than the number of columns, the first column is taken to be the row names. This allows data frames to be read in from the format in which they are printed.

create dataframe or table in r - The package tidyr addresses the common problem of wanting to reshape your data for plotting and usage by different R functions

If row.names is specified and does not refer to the first column, that column is discarded from such files. Sometimes you are given data in the form of a table and would like to create a table. Unfortunately, this is not as direct a method as might be desired.

create dataframe or table in r

Here we create an array of numbers, specify the row and column names, and then convert it to a table. R packages contain a grouping of R data functions and code that can be used to perform your analysis. We need to install and load them in your environment so that we can call upon them later. We are also going to assign a few custom color variables that we will use when setting the colors on our table. If you are in Watson Studio, enter the following code into a cell , highlight the cell and hit the "run cell" button.

create dataframe or table in r - Moving back and forth between these formats is non-trivial

Spread the surveys data frame with year as columns, plot_id as rows, and the number of genera per plot as the values. You will need to summarize before reshaping, and use the function n_distinct() to get the number of unique genera within a particular chunk of data. JSON data source will not automatically load new files that are created by other applications (i.e. files that are not inserted to the dataset through Spark SQL). For a DataFrame representing a JSON dataset, users need to recreate the DataFrame and the new DataFrame will include new files. This conversion can be done using SQLContext.read.json on a JSON file.

create dataframe or table in r - In addition to the basic SQLContext

This conversion can be done using SQLContext.read().json() on either an RDD of String, or a JSON file. This conversion can be done using SQLContext.read.json() on either an RDD of String, or a JSON file. Spark SQL supports automatically converting an RDD of JavaBeansinto a DataFrame. The BeanInfo, obtained using reflection, defines the schema of the table. Currently, Spark SQL does not support JavaBeans that contain nested or contain complex types such as Lists or Arrays.

create dataframe or table in r - Additional features include the ability to write queries using the more complete HiveQL parser

You can create a JavaBean by creating a class that implements Serializable and has getters and setters for all of its fields. Spark SQL supports two different methods for converting existing RDDs into DataFrames. The first method uses reflection to infer the schema of an RDD that contains specific types of objects. This reflection based approach leads to more concise code and works well when you already know the schema while writing your Spark application.

create dataframe or table in r - If these dependencies are not a problem for your application then using HiveContextis recommended for the 1

As with if_else and case_when, recode is strict about preserving data types and classes. So if you want to recode a factor level to NA make sure to use NA_character_ or as.character. Recode will automatcially convert the character value to a factor if the input vector is a factor. NA is a logical data type (see typeof) and y is not. Less memory will be used if colClasses is specified as one of the six atomic vector classes. A character vector of strings which are to be interpreted as NA values.

create dataframe or table in r - Future releases will focus on bringing SQLContext up to feature parity with a HiveContext

Blank fields are also considered to be missing values in logical, integer, numeric and complex fields. Note that the test happens after white space is stripped from the input, so na.strings values may need their own white space stripped in advance. Thus, we're reevaluating the dataframe data using the order() function, and we want to order based on the z vector within that data frame. This returns a new index order for the data frame values, which is then finally evaluated within the of dataframe[], outputting our new ordered result. Throughout this book we work with "tibbles" instead of R's traditional data.frame.

create dataframe or table in r - Notice that the data types of the partitioning columns are automatically inferred

Tibbles are data frames, but they tweak some older behaviours to make life a little easier. R is an old language, and some things that were useful 10 or 20 years ago now get in your way. It's difficult to change base R without breaking existing code, so most innovation occurs in packages.

create dataframe or table in r - Currently

Here we will describe the tibble package, which provides opinionated data frames that make working in the tidyverse a little easier. In most places, I'll use the term tibble and data frame interchangeably; when I want to draw particular attention to R's built-in data frame, I'll call them data.frames. Since RDD is schema-less without column names and data type, converting from RDD to DataFrame gives you default column names as _1, _2 and so on and data type as String. The formattable package is used to transform vectors and data frames into more readable and impactful tabular formats.

create dataframe or table in r - Sometimes users may not want to automatically infer the data types of the partitioning columns

Similar to the read_csv() function used for reading CSV files into R, there is a write_csv() function that generates CSV files from data frames. This yields surveys_gw where the observations for each plot are spread across multiple rows, 196 observations of 3 variables. Using spread() to key on genus with values from mean_weight this becomes 24 observations of 11 variables, one row for each plot. The package dplyr provides helper tools for the most common data manipulation tasks. It is built to work directly with data frames, with many common tasks optimized by being written in a compiled language (C++). An additional feature is the ability to work directly with data stored in an external database.

create dataframe or table in r - For these use cases

When reading from and writing to Hive metastore Parquet tables, Spark SQL will try to use its own Parquet support instead of Hive SerDe for better performance. This behavior is controlled by thespark.sql.hive.convertMetastoreParquet configuration, and is turned on by default. Like ProtocolBuffer, Avro, and Thrift, Parquet also supports schema evolution. Users can start with a simple schema, and gradually add more columns to the schema as needed. In this way, users may end up with multiple Parquet files with different but mutually compatible schemas. The Parquet data source is now able to automatically detect this case and merge schemas of all these files.

create dataframe or table in r - When type inference is disabled

The second method for creating DataFrames is through a programmatic interface that allows you to construct a schema and then apply it to an existing RDD. While this method is more verbose, it allows you to construct DataFrames when the columns and their types are not known until runtime. In an earlier example, we had the function automatically add the missing combinations using explicitly defined ranges of values. If you just want to output the missing combinations from the existing set of values in both columns, use the expand() function. Recall that if a time element is to be stored in a date, the date object becomes a Posix object class. This adds additional increment units to the seq function.

create dataframe or table in r - The default behavior of read

In the following example, we create a new data frame , then fill the table with date/times at 6 hour increments. Continuing with the df2.long dataframe, we can spread the long table back to a wide table while combining the sex and work variables. We'll add the names_sep argument which defines the character to use to separate the two variable names. Pivot_longer has an argument, names_sep, that is passed the character that is used to delimit the two variable values.

create dataframe or table in r - The variable as

Since the column values will be split across two variables we will also need to pass two column names to the names_to argument. To add more rows permanently to an existing data frame, we need to bring in the new rows in the same structure as the existing data frame and use the rbind() function. It's easy to filter the data based on row and column conditions. The line of code below creates a data table where age is more than 60 years. The first line of code below selects all the rows and two specified columns, while the second line prints the structure of the resulting data. This returns dt1's rows using dt2 based on the key of these data.tables.

create dataframe or table in r - Its value is either a vector of logicals

If you want to select multiple columns directly, then enclose all the required column names within list. For example, for tables created from an S3 directory, adding or removing files in that directory changes the contents of the table. If a Databricks administrator has disabled the Upload File option, you do not have the option to upload files; you can create tables using one of the other data sources.

create dataframe or table in r - Next

Once we have an RDD, let's use toDF() to create DataFrame in Spark. By default, it creates column names as "_1" and "_2" as we have two columns for each row. We will add the color_tile function to all year columns.

create dataframe or table in r - Lets suppose

This creates the effect of a column by column row wise heat map, and it looks great! Note that we are using our own custom colors declared in the very beginning of the code to ensure our table has the look and feel we want. We are going to narrow down the data set to focus on 4 key health metrics. Specifically the prevalence of obesity, tobacco use, cardiovascular disease and obesity. We are then going to select only the indicator name and yearly KPI value columns.

create dataframe or table in r - You can create the columns one by one by writing by hand

Saturday, January 22, 2022

Club Med Sandpiper Bay Employee Reviews

Being the main source of information for French speaking guests was quite gratifying. As a long time resident of Port St Lucie, I was able to inform and assist guests with their excursions, focusing on the local area as well as Miami and Orlando. The most enjoyable part of the job was to help the guests choose their excursions, translate for them regarding all aspects of their vacation and provide them with an above and beyond customer service experience.

club med sandpiper bay employee reviews - Being the main source of information for French speaking guests was quite gratifying

A typical day at work consisted of welcoming all the guests, informing them of all the excursions and rates. Assisting with the translation of website, responding to all inquiries, setting up the transportation, contacting guides, airboat captain, boat rides. Staying up to date on all the events in the area as well as translation of all material relevant to the excursions office.

club med sandpiper bay employee reviews - As a long time resident of Port St Lucie

Accounting of all sales, daily reports, maintaining all information on an excel spreadsheet used for all sales, communications with guests and contractors. I was also responsible for the training of new employees with a strong emphasis on organization and excellent customer service skills. Multitasking was a key element of the job as well as anticipating all the guests desires. The hardest part of the job was the numerous changes in ownership of the excursions office which created a lack of stability. The Club Med name obviously attracts a certain type of person...someone who is looking for a unique experience by living and working with people who want to make people's vacation experience extraordinary.

club med sandpiper bay employee reviews - The most enjoyable part of the job was to help the guests choose their excursions

There are genuinely nice individuals who go to work for Club Med for the measly $850/month that they pay. Unfortunately, the management remains a major conundrum. How are they trained, and if there was training, what was the concept behind it and what was their goal?

club med sandpiper bay employee reviews - A typical day at work consisted of welcoming all the guests

Read any TripAdvisor review of late and you will see that the management is non-existant and I for one can attest to it. The managers are there to blame their subordinates for these bad reviews and have zero skills in being the example for them to follow. Club Med should just close its doors, at least in Sandpiper, and consider seriously about investing in properly training their managers.

club med sandpiper bay employee reviews - Assisting with the translation of website

Sports are huge at this Club Med, so if your family is the active type, you're in heaven here. The Flying Trapeze Academy is as fun as it sounds -- an authentic chance for adults and kids to take lessons while flying along in a safe harnessed-in environment. The resort's excellent Tennis Academy has daily or weekly programs for both juniors and adults run by skilled coaches.

club med sandpiper bay employee reviews - Staying up to date on all the events in the area as well as translation of all material relevant to the excursions office

There are 20 courts, including illuminated ones for night play, and lessons are available to kids ages 4 and up. The resort's Fitness Academy, for those 16 and older, has a nonstop schedule of things like Zumba, Pilates, BODYPUMP and water aerobics. And the Golf Academy, held at the resort's 18-hole course, has group offerings for kids from ages 4 and up, too.

club med sandpiper bay employee reviews - Accounting of all sales

There's even a Beach Volleyball Academy here with group lessons included in the all-inclusive rates. Other included sports include basketball, Ping-Pong and bocce ball. Prepare for some exhausted kids come nighttime, in other words. Tour of the Club each morning ensure various departments up to par. Dealt with expatriate payroll separate from line staff payroll and benefits. Enforce organizational policies for both segments Daily interaction with guests and GOs.

club med sandpiper bay employee reviews - I was also responsible for the training of new employees with a strong emphasis on organization and excellent customer service skills

Along with staff promoted Bahamian cultural events. Worked with a variety of people from cultures all over the world which was very interesting and rewarding. Also was forced to hire persons from various family islands which added diversity to the team on many levels.

club med sandpiper bay employee reviews - Multitasking was a key element of the job as well as anticipating all the guests desires

Most of the time spent at the Club not much time for personal life. We have to manage our economy carefully to guarantee that our legacy of fiscal prudence and economic growth continues far into the future. To do so means that we have to deliver on comprehensive reforms in public finances that reinforce expenditure discipline, and significantly improve the government's revenue collection.

club med sandpiper bay employee reviews - The hardest part of the job was the numerous changes in ownership of the excursions office which created a lack of stability

In doing this we have to ensure that the private sector is brought along as the principal engine of growth. If I had one major tip for the resort, it would be to get nicer food service people. But, if we ever had a bothersome experience with employees, it was… well, basically it was just the crepe lady and the guy at the club in the evenings. He thought kids asking for smoothies was SUPER annoying and was happy to just pretend you weren't there until you left out of frustration. He was only interested in serving adults their drinks.

club med sandpiper bay employee reviews - The Club Med name obviously attracts a certain type of person

And, if it really is that annoying to serve a child, just turn the dang machine around and we can push the smoothie lever ourselves. What I loved about Club Med Sandpiper Bay was the staff was so fun and inviting. I loved the adults only area pool, it was in a beautiful spot on the river and so peaceful.

club med sandpiper bay employee reviews - There are genuinely nice individuals who go to work for Club Med for the measly 850month that they pay

I do think if I travel to the property with my family they would love the main pool as well. Serving breakfast , lunch and dinner , this centrally located restaurant is the main eating hub and where you are likely to spend most of your meals. Feel free to let the kids free range here to fill their plates with their favorite things. Choose your table, indoors our outside on a terrace overlooking the river, then hit the buffet for a delicious selection of international foods. Breakfast has omelet stations, and all manners of hot bacon and potato dishes, as well as fish, fruit, smoothies, French pastries and more.

club med sandpiper bay employee reviews - Unfortunately

Lunch and dinner are quite similar, with a range of American foods (burgers, pizza, etc.) and more international meats and seafood dishes and a wonderful range of fresh, European-style salads. There's so much selection at every meal, you'll hardly to be able to try it all in a day, not to mention a week. There's usually a crepe station several times a week, which kids love, and GOs scooping out ice cream elsewhere. Moms appreciate the "Baby Corner" area, with microwaves and small plates and bowls for preparing baby meals.

club med sandpiper bay employee reviews - How are they trained

Traveling to an all-inclusive resort with children under four can be a challenge, as the majority of resorts tend to offer kids' clubs for the 4- to 12-year-old set. At most of their family- oriented properties, the children's programs start at 4 months, not 4 years. Other activities at the resort vary widely; each day a new schedule comes out with a theme such as Sports Day.

club med sandpiper bay employee reviews - Read any TripAdvisor review of late and you will see that the management is non-existant and I for one can attest to it

Yoga, poolside games, basketball, ultimate Frisbee and spinning classes are just a small sampling. There's even circus training onsite, complete with a flying trapeze that both kids and adults can try out. In short, this is a perfect resort for an active family with energetic kids who hate to be bored. A typical day at work started with me setting up the store for the day and making sure everything was clean and stocked. Once we had the store open I would make sure all customer information had been imputed and updated.

club med sandpiper bay employee reviews - The managers are there to blame their subordinates for these bad reviews and have zero skills in being the example for them to follow

Throughout the day I would keep inventory stocked while helping customers find exactly what they needed as well as educating them on the product. Before I left the store I would do a full inventory count and would order more if necessary. My staff was just a pleasure to work with, really friendly people who were knowledgeable about the products in the store. The staff and I were always learning new things having to keep up with the advancements in the medical industry.

club med sandpiper bay employee reviews - Club Med should just close its doors

The hardest part of my job was hearing some of our customers personal problems with loved ones and their own medical issues. The only other difficulties were making sure all employees were happy with their schedules while trying to also make sure it didn't interrupt with their school schedules or personal life. Definitely the most satisfaction I receive from working here is helping out customers to find the perfect things to help them with their medical issues. I absolutely loved it when a customer would come back and tell me how much I helped them by educating them on the products and finding them the perfect one. There are many options for sports and other activities at the resort, but keep in mind many of these are on a schedule are only available at certain times. Our kids took part in the Kids Club, Mini Club Med a few times.

club med sandpiper bay employee reviews - Sports are huge at this Club Med

My husband and I were not able to do many of the activities as most of the time the kids were with us. If you want to join any activities, then you can check the daily schedule of events on the Club Med app. The staff are so friendly, enthusiastic, and helpful.

club med sandpiper bay employee reviews - The Flying Trapeze Academy is as fun as it sounds -- an authentic chance for adults and kids to take lessons while flying along in a safe harnessed-in environment

The food was great and choices are anywhere from extremely healthy, low fat, to decadent, high quality gourmet meals, to fast food type options. The activities were well organized, and the night time entertainment was a lot of fun. Totally unresponsive, uncaring and clueless management. Ridiculously high employee turnover rate , abusive hours , verbal abuse directed towards employees. Chaotic , understaffed environment that totally lacks professionalism. Young, enthusiastic staff totally unsupported and set up to fail.

club med sandpiper bay employee reviews - The resort

Employee accommodations not properly cleaned, staph infected equipment and surfaces. It doesn't have a clue how to operate within the hospitality industry. Management has no clue how to schedule , train , manage or properly utilize staff to run a resort. Total disgrace.Entire staff overwhelmed, overworked with no direction. The resort operates the same programs year round, yet has no basic standards or systems for operation. All programs poor operation...front desk/ childcare/ recreation/ food and beverage.

club med sandpiper bay employee reviews - There are 20 courts

I like my colleagues and my work environment, however I do think that this company needs to change many things especially people in higher position and human resources. This company allows managers to party until midnight even during the pandemic, disrupting employees' sleep. Also, I do not feel the HR has our best interest at heart. I do not feel like I can come to them if I ever have concerns.

club med sandpiper bay employee reviews - The resort

Work hours are long, and have to attend to guests all of the time even during off days. The achievement of these objectives clearly rests on stronger economic growth going forward. As I have stated on previous occasions, successful and durable fiscal consolidation necessarily requires a fundamental restructuring of our fiscal and taxation policies. The details of that restructuring were laid out in the February 2013 White Paper on Tax Reform, and they were an integral part of the medium-term fiscal consolidation plan that I set out in the May 2013 Budget Communication. As the Government moves ahead with these fundamental reforms that it was elected to implement, it is crucial that focus be maintained on the overarching plan for economic renewal, job creation and social progress. But when I checked prices for the summer, I was excited to see that a three-night, all-inclusive stay for my family of three would set us back just over $1,500.

club med sandpiper bay employee reviews - And the Golf Academy

While not inexpensive by any stretch, we'd enjoy all of our food, drinks and activities on property — including a kids' club. And that rate booked us right into a superior family room, with a separate area with bunk beds for our daughter. Every meal has a different theme… some nights the dinner buffet has Indian food, Mexican, etc. But, no matter what the theme is, there are always some other options.

club med sandpiper bay employee reviews - There

There are burgers, pizza, and hot dogs every night, as well as an Italian pasta and salad bar. I must admit, the desserts leave something to be desired. Think 'cruise desserts' and you probably know what I'm talking about. Like, something super pretty that looks delicious, but has somehow had all trace of flavor sucked out of it.

club med sandpiper bay employee reviews - Other included sports include basketball

Club Med, if you need some dessert recipes, I would be happy to share some. 😉 We did, however, like the crepes for dessert, despite the crepe lady being the grouchiest one at the resort. They would drag me with them to get their crepes.

club med sandpiper bay employee reviews - Prepare for some exhausted kids come nighttime

My family and I just returned from a 6-day, 5-night stay at the Club Med Sandpiper Bay in Port St. Lucie, Florida. This is is an all-inclusive family resort in the United States. My husband and I stayed at the resort along with our two kids and my mother-in-law.

club med sandpiper bay employee reviews - Tour of the Club each morning ensure various departments up to par

This Club Med is an all-inclusive family sports resort in Florida. Before we left I searched for Club Med Sandpiper Bay Review and did not find many reviews. So, I put together a blog post and video review of the Club Med Florida resort. Families have endless ways to spend their days here.

club med sandpiper bay employee reviews - Dealt with expatriate payroll separate from line staff payroll and benefits

On property, there are Hobie Cats, SUP and kayak rentals for forays out into the river . The three onsite pools range from an adults-only pool to a splash pad for your youngest ones. The expertly managed kids camp keeps them entertained all day with everything from cooking classes and pool parties to arts and crafts and dance lessons, scavenger hunts and talent shows. Golf and tennis lessons and clinics are held throughout the day. And should you tire of all there is to do onsite , day trips to Miami, Orlando, the beach and even air boat rides in the Everglades can all be arranged.

club med sandpiper bay employee reviews - Enforce organizational policies for both segments Daily interaction with guests and GOs

The past 6 years I have been working for Club Med. What was suppose to only be a 6month getaway turned into 6 years of life long lasting experiences I will never forget. I worked in over 8 different countries and learned about other languages and cultures.

club med sandpiper bay employee reviews - Along with staff promoted Bahamian cultural events

Create Dataframe Or Table In R

Spark SQL can convert an RDD of Row objects to a DataFrame, inferring the datatypes. Rows are constructed by passing a list of key/value pai...